Linux 进程管理 | ps、top、kill
ps
可显示系统进程状况
top
可动态显示进程状况
kill
用来结束进程
ps(Process Status)
ps 命令用来列出系统中当前运行的进程,就是执行 ps 命令时的进程
执行 ps -auxwwf
结果如下图:
结果信息
-
USER 运行该进程的用户
-
PID 运行着的命令(CMD)的进程编号
-
%CPU 该进程占用的 CPU
-
%MEM 该进程占用的内存
-
VSZ 该 process 使用掉的虚拟内存量 (Kbytes)
-
RSS 该 process 占用的固定的内存量 (Kbytes)
-
TTY 命令所运行的位置(终端)
-
STAT 该进程的状态
-
START 进程开始的时间
-
TIME 运行着的该命令所占用的 CPU 处理时间
-
CMD 该进程所运行的命令
进程状态
-
R 运行 runnable (on run queue)
-
S 中断 sleeping
-
D 不可中断 uninterruptible sleep (usually IO)
-
T 停止 traced or stopped
-
Z 僵死 a defunct (”zombie”) process
常用命令
-
ps -aux 显示当前的进程比较全面的信息
-
ps -aux --sort -pcpu | head -n 10 根据 CPU 使用率升序排列,显示前 10 条
-
ps -aux --sort -pcpu,+pmem 根据 CPU 使用率和内存使用率升序排列
-
ps -ef | grep php 显示 PHP 相关进程的详细信息,和
aux
参数输出格式不同 -
ps -L [PID] 根据线程来过滤进程
-
ps -axjf 或 pstree 树形显示进程信息
-
ps -eo pid,user,args 控制输出格式(-o),能与 -e 参数一起使用的关键字有 args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。
top
动态显示进程信息,进行实时监控。不同于 ps 的静态显示
输出内容(top)
-
15:58:18 系统当前时间
-
up 36 days, 6:30, 系统运行时间 36 天 6 小时 30 分
-
1 user, 当前有一个用户登录
-
load average: 0.03, 0.01, 0.00 分别为 1min 内、5min 内、15min 内的平均负载
输出内容(Tasks)
-
100 total 进程总数
-
1 running 运行中的进程数
-
56 sleeping 睡眠状态的进程数
-
0 stopped 停止的进程数
-
0 zombie 僵尸进程数
输出内容(Cpu)
-
0.0 us 用户占用 CPU 百分比
-
0.2 sy 内核占用 CPU 百分比
-
0.0 ni 用户进程中改变优先级的进程占用 CPU
-
99.8 id 空闲 CPU
-
0.0 wa 等待输入输出的 CPU
-
0.0 hi 硬中断占用 CPU
-
0.0 si 软中断占用 CPU
-
0.0 st Steal Time(进程阻塞时间?)
输出内容(Mem)
-
963420 total 物理内存总量
-
337368 free 空闲内存
-
168308 used 使用的内存
-
457744 buff/cache 用作内核缓存的内存
输出内容(Swap)
-
2097148 total 交换区总量
-
2052604 free 空闲交换区
-
44544 used 使用的交换区
-
608956 avail Mem 内容已存入内存还没被覆盖的交换区容量
输出内容(进程)
-
PID 进程号
-
USER 进程所有者
-
PR 进程优先级
-
NI nice,负值为高优先级,正值为低优先级
-
VIRT 进程使用的内存(SWAP + RES)
-
RES 进程使用的、未被换出的物理内存大小
-
SHR 共享内存大小
-
S 进程状态,和上面的 ps 结果中的状态一样
-
CPU 占用 CPU 百分比
-
MEM 占用内存百分比
-
TIME+ 进程运行的时间
-
COMMAND 进程命令
进入 top 后的常用快捷键
-
k 终止进程
-
i 忽略闲置和僵死进程,是个开关
-
o 改变排序
-
c 切换显示 COMMAND 详细和简略模式
-
q 退出
-
P 根据 CPU 利用率排序
-
T 根据运行时间排序
-
M 根据内存使用率排序
-
h 显示参数信息
kill
通过上面的 ps 和 top 获取到进程的 PID 或 进程名称,就可以 kill 掉相应的进程
- kill 信号,用
kill -l
查看
-
经常用到的信号
-
1) SIGHUP
挂起(终端断线) -
2) SIGINT
中断(同 Ctrl + C) -
3) SIGQUIT
退出 -
9) SIGKILL
杀死(强制终止) -
15) SIGTERM
终止 -
17) SIGCHLD、19) SIGSTOP、23) SIGURG
停止
-
- kill 命令,
kill <信号> <PID/名称>
# 杀死进程号为 3827 的进程
kill -9 3827
# 杀死多有 chrome 进程,会有残留
killall -9 chrome