要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程运行状态。Linux 系统中我们可以使用 ps 命令查看进程。
ps 命令介绍
ps(process status) 命令是 Linux 下最常用的进程查看工具,使用该命令可以确定哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等。
注意:ps 命令工具显示的是进程的瞬间状态,并不是动态连续显示,如果想对进程状态进行实时监控应该用 top 命令。
ps 命令的基本使用
1. 执行任何不加选项的 ps 命令
[root@VM_81_181_centos ~]# ps
PID TTY TIME CMD
22402 pts/1 00:00:00 bash
22447 pts/1 00:00:00 ps
直接执行不加任何选项的 ps 命令时,则只显示当前用户会话中打开的进程。第一行为列表标题,包含基本四个字段,各个字段的含义描述如下:
PID:表示该进程的唯一 ID 号
TTY 或 TT:启动进程的终端名。表示该进程在哪个终端上运行。不是从终端启动的进程或与终端机无关的进程则显示为 ?
TIME:该进程使用 CPU 的累计时间
CMD:该进程所运行的命令
2.使用标准语法 (Unix 风格) 查看各个进程
选项:
-e:显示系统内所有进程的信息。与 -A 选项功能相同
-f:使用完整(full) 的格式显示进程信息,如果只有 ps -e 则输出进程信息的格式和只使用 ps 一样
各字段含义如下:
UID:启动该进程的用户的 ID 号
PPID:代表该进程的父进程的 ID 号
C:进程的 CPU 处理器利用率
STIME/START:表示进程的启动时间
注意:也可以使用 ps -eF 命令查看系统内的所有进程信息,输出的进程信息比使用 ps -ef 多三个信息分别是:SZ,RSS,PSR 关于这三个感兴趣的可以自己上网查阅一下
3.使用 BSD 语法查看系统上的进程信息
3.1 显示当前终端下的所有信息
a:显示当前终端下的所有进程信息,包含其他用户的进程信息。和 x 选项结合使用可以显示系统中所有进程的信息
x:显示当前用户在所有终端下的进程信息
字段描述:
STAT:表示进程的当前状态
R:running,运行或可运行状态(在运行队列中)。正在运行或准备运行的进程。
S:interruptable sleeping,可中断睡眠(等待事件完成)。正在睡眠的进程。
D:uninterruptable sleeping,不可中断的睡眠进程(通常为IO)。
T:stopped,停止或被追踪的进程。由作业控制信号停止。
Z:zombie,失败终止的(“僵死”)进程。
s:session leader,会话层状态。代表的父进程
N:低优先级进程
<:高优先级进程
+:前台进程。在前台进程组中
l:多线程进程。
3.2 以面向用户的格式显示当前终端下的所有信息
u:使用以用户为主的格式输出进程信息
字段描述:
USER:启动该进程的用户帐号名称
%CPU:表示进程的 CPU 占用率
%MEM:表示进程的内存占用率
VSZ:表示进程虚拟内存的大小,以 KB 为单位
4. 排序
当使用 aux 选项查看进程的 CPU 或内存使用量来筛选,从而方便找出占用资源最多的进程,但是默认情况下不排序,在这里我们可以使用 --sort 命令选项排序,例如:
ps aux --sort=%mem 或 ps aux --sort %mem 这两条命令是一样的,也可以使用 ps aux --sort=+%mem 或 ps aux --sort +%mem,%mem 前面默认有一个加号 + ,加不加上结果都是一样的,都表示升序排序,如果想要降序排序并且看到字段标题可以在 %mem 前面加上减号 -,如下所示:
5.根据特定条件过滤
在这里介绍一下和 grep 命令结合使用
仅仅显示一个名为 sshd 的进程信息
以上就是 Linux 使用 ps 查看进程的部分比较常用的操作命令