在Linux中,一个程序的运行实例叫进程。最常用的进程信息查看命令如ps, pstree, top,杀死进程命令kill。
Linux中的进程有5种状态:
- 运行,包括正在运行或在运行队列中等待
- 中断,休眠中,在等待某个条件的形成或接收到信号
- 不可中断,收到信号不唤醒和不可运行,进程必须等待直到有中断发生
- 僵死,进程已终止,但进程描述符存在,直到父进程调用wait4()后释放
- 停止,进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行
ps(Process Status)命令用于列出系统中当前运行进程的信息,准确说是运行ps命令的那个时刻,其通用语法是ps [选项]
。如果想要动态的显示进程信息,就可以使用top命令。
值得指出的是,由于历史和兼容原因,选项的形式会有所不同。对于UNIX风格的选项,有一个先导-
,GNU风格的有两个先导-
,BSD风格的则没有。不同的选项类型可以混合使用,但在某些特定情况下,可能会出现冲突,因此最好坚持使用一种选项类型。
与Linux进程状态相对应,ps标识进程的5种状态码有:
- R 运行 runnable or on run queue
- S 中断 sleeping
- D 不可中断uninterruptible sleep (usually IO)
- Z 僵死 zombie process
- T 停止
-
ps
ps
将为在当前 shell 中运行的至少两个进程、shell 本身以及调用命令时在 shell 中运行的进程打印四列信息。其中PID为进程ID,TTY为进程控制终端的名称,以分秒的形式的TIME为进程的累积CPU时间,CMD为用来开启进程的命令名称。 -
ps aux
(BSD)
选项a
表示显示所有用户的进程,仅不显示与终端无关的进程和group leader的进程。选项u
代表一种面向用户的格式,提供有关进程的详细信息。x
选项指示ps
列出没有控制终端的进程,主要是在boot时启动并在后台运行的进程。
其中USER为运行进程的用户,%CPU为进程的CPU利用率,%MEM为进程驻留集大小占机器物理内存的百分比。VSZ为以KiB为单位的进程虚拟内存大小,RSS为进程正在使用的物理内存大小,STAT为进程状态码。START为命令启动的时间。 -
ps auxf
(BSD)
f
选项告诉ps
显示父子进程的树视图。 -
`ps aux --sort (BSD)
ps 命令还允许您对输出进行排序。例如,要根据内存使用情况对输出进行排序。
详细参考How to sort ps output -
ps -eo pid
o
选项允许指定在运行 ps 命令时显示哪些列。 -
ps aux | grep root
ps
命令的输出可以用grep
过滤。
-
ps aux | grep less
如果要显示ps
命令的输出,一次一页将其通过管道传递给less
命令。
总结
ps
命令是当在Linux系统上进行trouble shooting时最常用的命令之一。它有很多选项,但最常用的就是ps aux
或者ps -ef
来收集运行进程的信息。
其他选项查询man7 page。
参考链接:
https://linuxize.com/post/ps-command-in-linux/