进程管理-查看进程
ps
命令
ps aux
:查看系统中所有进程,使用 BSD 操作系统格式,注意 aux
前面没有 -
[root@iZwz91sneajs2ji49vo4wxZ routes]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 125780 3136 ? Ss 6月03 17:55 /usr/lib/systemd/systemd --system
root 2 0.0 0.0 0 0 ? S 6月03 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 6月03 1:10 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 6月03 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 6月03 0:12 [migration/0]
root 8 0.0 0.0 0 0 ? S 6月03 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 6月03 34:26 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 6月03 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 6月03 0:17 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 6月03 0:09 [watchdog/1]
root 741 0.0 0.0 110104 132 tty1 Ss+ 6月03 0:00 /sbin/agetty --noclear tty1 linux
root 742 0.0 0.0 110104 132 ttyS0 Ss+ 6月03 0:00 /sbin/agetty --keep-baud 115200,38
root 6462 0.0 0.0 157320 6068 ? Ss 13:41 0:00 sshd: root@pts/0
root 6500 0.0 0.0 115684 2184 pts/0 Ss 13:41 0:00 -bash
...
各列含义:USER
:该进程是哪个用户产生的PID
:该进程 ID%CPU
:该进程 CPU 占用率%MEM
:该进程物理内存占用率VSZ
:该进程占用虚拟内存大小RSS
:该进程实际占用物理内存大小TTY
:该进程是哪个终端中运行的。tty1-tty7 代表本地控制台终端,tty1-tty6 是本地命令行终端,tty7 是图形界面终端,pts/0-255 代表虚拟终端STAT
:进程状态。R运行,S睡眠,T停止状态,s包含子进程,+位于后台START
:进程启动时间TIME
:该进程占用 CPU 的运算时长COMMAND
:产生此进程的启动命令
pstree
命令
pstree
:查看进程树
[root@iZwz91sneajs2ji49vo4wxZ routes]# pstree
systemd─┬─AliSecGuard───6*[{AliSecGuard}]
├─AliYunDun───23*[{AliYunDun}]
├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
├─BT-Panel───2*[{BT-Panel}]
├─BT-Task───7*[{BT-Task}]
├─CmsGoAgent.linu─┬─exe───12*[{exe}]
│ └─5*[{CmsGoAgent.linu}]
├─2*[agetty]
├─aliyun-service───2*[{aliyun-service}]
├─atd
...
top
命令
top
:查看系统健康状态利器
上图含义:top - 16:42:08 up 130 days, 2:56, 1 user, load average: 0.10, 0.09, 0.11
内容 | 含义 |
---|---|
top - 16:42:08 | 当前系统时间是 16:42:08 |
up 130 days, 2:56 | 当前服务器已开机 130 天 2 小时 51 分 |
1 user | 当前有 1 个用户连接了服务器 |
load average: 0.10, 0.09, 0.11 | 服务器 1 分钟之前平均负载 0.10,5 分钟之前平均负载 0.09,15 分钟之前平均负载 0.11,平均负载指的是 CPU 占用率,数值跟 CPU 核数有关 |
Tasks: 137 total, 1 running, 136 sleeping, 0 stopped, 0 zombie
内容 | 含义 |
---|---|
Tasks: 137 total | 系统中有 137 个进程 |
1 running | 1 个进程正在运行 |
136 sleeping | 136 个睡眠进程 |
0 stopped | 0 个停止的进程 |
0 zombie | 0 个僵尸进程 |
%Cpu(s): 1.5 us, 0.8 sy, 0.0 ni, 97.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
内容 | 含义 |
---|---|
%Cpu(s): 1.5 us | 用户模式占用的 CPU 百分比为 1.5% |
0.8 sy | 系统模式占用的 CPU 百分比为 0.8% |
0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比为 0.0% |
97.7 id | 空闲的 CPU 百分比为 97.7% |
0.0 wa | 等待输入/输出的进程占用 CPU 百分比为 0.0% |
0.0 hi | 硬中断请求服务器占用的 CPU 百分比为 0.0% |
0.0 si | 软中断请求服务器占用的 CPU 百分比为 0.0% |
0.0 st | st(Steal time)虚拟时间百分比,当使用虚拟机时,虚拟机等待实际 CPU 的时间百分比为 0.0% |
参数:-d
:隔几秒刷新一次,默认 3 秒-b
:使用批处理模式输出。一般和 -n
一起使用-n
:指定 top
命令的执行次数,一般和 -b
一起使用
交互功能:?
或 h
:显示交互模式的帮助P
:以 CPU 使用率排序,默认是此选项M
:以内存的使用率排序N
:以 PID 排序q
:退出
进程管理-杀死进程
kill
命令
kill [信号] 进程id ...
:一般用于杀死进程kill -9 pid ...
:强制杀死进程,支持多个kill -1 pid ...
:重启进程,平滑重启服务,用于 Nginx 或 Apache 等
killall
命令
killall [选项][信号] 进程名
选项:-i
:交互式,询问是否要杀死某个进程-I
:忽略进程名的大小写killall -9 httpd
:杀死所有 Apache 进程killall -i -9 httpd
:交互式杀死所有 Apache 进程
[root@iZwz91sneajs2ji49vo4wxZ ~]# killall -i -9 php
信号 php(2927) ? (y/N) N
信号 php(2928) ? (y/N) N
信号 php(2929) ? (y/N) N
[root@iZwz91sneajs2ji49vo4wxZ iep-test.ca163.com]# ps -ef|grep iep
root 6476 6237 5 20:01 pts/1 00:00:30 java -jar target/iep.jar
root 6718 6237 1 20:03 pts/1 00:00:04 java -jar target/iep.jar
root 7756 6237 0 20:10 pts/1 00:00:00 grep --color=auto iep
[root@iZwz91sneajs2ji49vo4wxZ iep-test.ca163.com]# killall -i -9 java
信号 java(6476) ? (y/N) y
信号 java(6718) ? (y/N) y
信号 java(16450) ? (y/N) n
[1]- 已杀死 java -jar target/iep.jar
[2]+ 已杀死 java -jar target/iep.jar
w
命令
查看所有终端用户
[root@iZwz91sneajs2ji49vo4wxZ ~]# w
12:18:13 up 6 days, 22 min, 3 users, load average: 0.00, 0.04, 0.09
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 119.33.33.142 11:53 5.00s 0.01s 0.00s w
root pts/1 119.33.33.142 12:00 15:01 33.25s 0.00s -bash
root pts/2 119.33.33.142 12:15 5.00s 0.00s 0.00s -bash
pkill
命令
pkill [选项][信号] 进程名
:功能与 killall
相似
选项:-t
:按照终端号踢出 linux 用户,只有 root 拥有些权限
终端1(把终端 2 踢下线):
[root@iZwz91sneajs2ji49vo4wxZ ~]# w
12:20:44 up 6 days, 24 min, 3 users, load average: 0.04, 0.04, 0.08
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 119.33.33.142 11:53 4.00s 0.01s 0.00s w
root pts/1 119.33.33.142 12:00 17:32 33.49s 0.00s -bash
root pts/2 119.33.33.142 12:20 12.00s 0.00s 0.00s -bash
[root@iZwz91sneajs2ji49vo4wxZ ~]# pkill -t -9 pts/2
终端2(被踢下线):
[root@iZwz91sneajs2ji49vo4wxZ ~]# w
12:20:38 up 6 days, 24 min, 3 users, load average: 0.05, 0.04, 0.09
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 119.33.33.142 11:53 22.00s 0.01s 0.01s -bash
root pts/1 119.33.33.142 12:00 17:26 33.46s 0.00s -bash
root pts/2 119.33.33.142 12:20 6.00s 0.00s 0.00s w
[root@iZwz91sneajs2ji49vo4wxZ ~]# Connection to 120.77.155.61 closed.
进程优先级
Linux 是一个多用户、多任务的操作系统,但是 CPU 在同一个时钟周期只能运算一个指令。进程优先级在一定程序上决定了每个进程运行的先后顺序,一般都不用去修改进程优先级,修改的作用不大,只有硬件开发可能需要修改优先级ps -le | more
查看优先级信息
[root@iZwz91sneajs2ji49vo4wxZ ~]# ps -le | more
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 12936 ep_pol ? 00:01:12 systemd
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
1 S 0 4 2 0 60 -20 - 0 worker ? 00:00:00 kworker/0:0H
1 S 0 6 2 0 80 0 - 0 smpboo ? 00:00:06 ksoftirqd/0
1 S 0 7 2 0 -40 - - 0 smpboo ? 00:00:02 migration/0
1 S 0 8 2 0 80 0 - 0 rcu_gp ? 00:00:00 rcu_bh
1 S 0 9 2 0 80 0 - 0 rcu_gp ? 00:01:41 rcu_sched
1 S 0 10 2 0 60 -20 - 0 rescue ? 00:00:00 lru-add-drain
5 S 0 11 2 0 -40 - - 0 smpboo ? 00:00:01 watchdog/0
5 S 0 12 2 0 -40 - - 0 smpboo ? 00:00:00 watchdog/1
1 S 0 13 2 0 -40 - - 0 smpboo ? 00:00:01 migration/1
1 S 0 14 2 0 80 0 - 0 smpboo ? 00:00:04 ksoftirqd/1
1 S 0 16 2 0 60 -20 - 0 worker ? 00:00:00 kworker/1:0H
PRI
代表 Priority
,NI
代表 Nice
,这两个数值都代表进程优先级,数值越小优先级越高
用户只能修改 NI
的值,NI 的范围是 -20 到 19
普通用户调整的 NI 值的范围是 0 到 19,而且只能调整自己的进程
普通用户只能调高 NI 的值,不能降低
root 用户才能设定进程 NI 值为负值,而且可以调整所有用户的进程
PRI(最终值)= PRI(原始值)+ NI,只有 PRI 最终值才代码进程的优先级