共计 1298 个字符,预计需要花费 4 分钟才能阅读完成。
在默认情况下,ps 命令只会显示运行在当前控制台下,属于当前用户的进程,在上图中,我们只运行了 bash shell 以及 ps 命令本身。上图中显示了程序的进程 ID(1538,1583),它们运行在 TTY 终端, 以及进程已有的 CPU(TIME) 时间。
在 Linux 系统中使用的 GNU ps 命令支持 3 种不同类型的命令行参数。包括 Unix 风格的参数,BSD 风格的参数,GNU 风格的长参数。
在 ps 中每种风格的参数都很多,下面例举一些常用的 Unix 风格的 ps 命令参数。下面表格还有很多参数没有列出来。
多数 linux 系统管理员都有自己的一组参数,来提取有用的进程信息。例如可用 -ef 参数组合,如下图所示:
在上面的列表中,输出的信息包括:UID 列是指启动这些进程的用户。PID 列是指进程 ID。PPID 列是指:父进程 ID(该进程是由另一个进程启动的)。C 列是指进程生命周期中的 CUP 利用率。STIME 列是指进程启动时的系统时间。TTY 列是指进程启动时的终端设备。TIME 列是指运行进程需要的累计 CPU 时间。CMD 列是指启动的程序名称。
如果想要获取更多的信息,可以采用 - l 参数,它会产生一个长格式的输出, 如下图所示:
上面的列表中,输出的信息包括:F 列是指内核分配给进程的系统标记。S 是指进程状态 (O 是正在运行。S 是休眠。R 是可运行,正等待运行。Z 是僵化,进程已结束但父进程已不存在,T 是停止)。PRT 列是指进程的优先级(越大数字表越低的优先级)。NT 列是指谦让度值,用来参与决定优先级。ADDR 列是指进程的内存地址。SZ 列是指假如进程被换出,所需的交换空间在大致大小。WCHAN 列是指进程休眠的内核函数的地址。
命令 grep 是查找,中间 | 是管道命令,代表 ps 与 grep 同时执行。grep 是一种强大的文本搜索工具,它能使用正则搜索文件,并把匹配的行打印出来。下面是匹配与 nginx 字符有关的进程, 用 grep 过滤后进程信息列名也屏蔽了。
下面命令加了 l 长列表显示。
上图第二列值是 S,代表当前 nginx 进程是休眠状态, 第三列 uid 是属于 hsr 用户。
BSD 风格参数的 ps 命令参数常用如下(其它很多未列出)
使用 BSD 参数时,ps 命令会自动改变输出以模仿 Unix 格式。例如:使用参数 l 输出:
上图中列输出与 Unix 风格输出大部份是一样的。只有小部份不同包括 VSZ 是指进程在内存中的大小,以 KB 单位。RSS 是指进程在未换出时占用的物理内存。STAT: 代表当前进程状态的双字符状态码。
在 STAT 双字符状态码中,第一个字符与 Unix 的 S 列值一样。后一个字符代表如下:
可以看出 bash 命令处于休眠状态。是一个控制进程。Ps 是运行在系统的前台。
GNU 长参数风格的 ps 命令参数常用如下(其它很多未列出)
例如使用组合参数输出。如下图所示:
例如与其 Unix 风格组合参数输出。如下图所示:
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)