Linux 进程管理 | ps、top、kill

发布时间 2023-03-30 16:22:02作者: 菜乌

ps 可显示系统进程状况

top 可动态显示进程状况

kill 用来结束进程


ps(Process Status)

ps 命令用来列出系统中当前运行的进程,就是执行 ps 命令时的进程

执行 ps -auxwwf 结果如下图:

image


结果信息

  • 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 -axjfpstree 树形显示进程信息

  • ps -eo pid,user,args 控制输出格式(-o),能与 -e 参数一起使用的关键字有 args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。


top

动态显示进程信息,进行实时监控。不同于 ps 的静态显示

image


输出内容(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 查看

image


  • 经常用到的信号

    • 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