ps 命令是什么?
Linux 中的 ps 命令可以显示系统中正在运行的进程信息,比如进程ID等。它是一个应用很广泛的工具,有大约80多个选项,足见它的复杂性。本文将介绍一些关于 ps 命令最常用的例子。
ps命令在Linux中的基本用法
不带任何选项的 ps 命令,显示当前 shell 中正在运行的进程:
下面是输出,我在后台发送了 gedit 命令,所以它显示了三个进程,否则你通常只会看到 ps 和 bash。
在这里:
- PID 是进程的唯一 进程ID;
- TTY 是用户登录的终端类型。pts表示伪终端;
- TIME 显示进程已运行的时间;
- CMD 是用以启动进程的命令。
当然,这个例子不能提供任何真正有用的信息,下面我们来看一些 ps 命令的更实用的例子。
1. 查看所有正在运行的进程
如果要查看自己运行的所有进程,可以使用选项 x:
x 选项将显示所有进程,即使它们不与当前 tty(终端类型)关联,或者它们没有控制终端(如守护进程)。
选项前面的中划线 - 是可选的,但一般在 Linux 中约定使用它,所以最好带上中划线 - 。
以下是其中一部分输出(我省略了一些,因为它总共有数百行):
上述输出中的 STAT 表示进程状态码(Process State Code),你可以在 ps 的 man 手册中查看其详细信息。
不过我们很少会看到 ps 只使用 -x 选项,通常会与选项 -u 一起使用:
使用选项 -u,可以看到每个进程的详细信息:
上面输出中,可以看到每个进程的用户名、CPU消耗和内存使用情况等。RSS显示进程当前在 RAM 中有多少内存,而 VSZ 则显示进程总共有多少虚拟内存。
2. 使用 ps aux 命令查看所有正在运行的进程
你可能在 Linux 教程或文档中经常看到 px -aux 或者 px aux 这样的例子。
通过使用 -a 选项,可以看到 Linux 系统中所有用户正在运行的进程。
其输出与 ps -ux 相同,但也包含了其他用户的进程,-u 选项可以让你看到进程所属用户。
3. 使用 ps -ef 查看正在运行的进程
除了 ps -aux 之外,还可以使用 -e 选项列出所有正在运行的进程,然后在结合 -f 选项,以获得运行进程的完整列表:
这里请注意 e 前面的中划线 - 很重要,如果没有的话,会显示不同的结果。
此外还可以组合 H 选项,在线程视图中查看所有进程,其中子进程位于其父进程下:
4. 查看特定用户的进程
要查看某个用户正在运行的进程,可以使用 -U 选项后跟用户名:
比如,查看 root 用户运行的进程:
5. 查看由组运行的所有进程
可以通过提供组名或组id,按组而不是用户对正在运行的进程进行分类:
还可以组合使用 f 选项以获得完整的列表,大家可以自己试试看看输出结果。
6. 获取程序的所有事件和 PID
ps 命令的一个基本用途是获取正在运行的程序的进程ID(PID)。比如当你要结束某个程序时,会搜索所有的程序事件,获取它们的PID,然后使用 kill 命令结束该进程。
比如,我要查询 apt 包管理器所运行的实例:
另外,也可以使用 grep 来获取类似的结果:
7. 获取相关 PID 的进程信息
如果你有一个 PID,但是不知道它是属于哪个进程,可以使用 ps 命令来查询进程信息:
可以使用逗号来分割多个PID,进而查询多个进程信息:
正如本文开始所说的,ps 是一个复杂且应用广泛的命令,本文所介绍的只是一些最常用的例子。关于其详细信息,大家可以查看 man 手册。