Linux 中的 ps 命令(列出进程)
在Linux中,一个程序的运行实例被称为进程。偶尔,在Linux机器上工作时,你可能需要找出当前正在运行的进程。
有许多命令可以用来查找有关正在运行的进程的信息,其中ps
、pstree
和top
是最常用的命令。
本文解释了如何使用ps
命令来列出当前正在运行的进程,并显示这些进程的信息。
如何使用 ps
命令
ps
命令的一般语法如下::
ps [OPTIONS]
由于历史和兼容性的原因,ps
命令接受几种不同类型的选项:
- UNIX风格的选项,前面有一个单数破折号。
- BSD风格的选项,使用时不加破折号。
- GNU的长选项,前面有两个破折号。
不同的选项类型可以混合使用,但在一些特定的情况下,会出现冲突,所以最好坚持使用一种选项类型。
BSD和UNIX的选项可以被归类。
在最简单的形式下,当不使用任何选项时,ps
将打印四列信息,分别是当前shell中运行的最小两个进程、shell本身和调用该命令时在shell中运行的进程。
ps
输出包括有关shell(bash
)和在这个shell中运行的进程(ps
,即你输入的命令)的信息:
输出
PID TTY TIME CMD
1809 pts/0 00:00:00 bash
2043 pts/0 00:00:00 ps
这四列标示为PID
,TTY
,TIME
,和CMD
。
PID
- 进程ID。通常,当运行ps
命令时,用户寻找的最重要信息是进程的PID。知道了PID,你就可以杀死一个故障的进程 。TTY
- 进程的控制终端的名称。TIME
- 进程的累积CPU时间,以分和秒为单位显示。CMD
- 用于启动进程的命令的名称。
上面的输出并不是很有用,因为它没有包含很多信息。当用附加选项启动时,ps
命令的真正力量才会出现。
ps
命令接受大量的选项,可以用来显示一组特定的进程和有关该进程的不同信息,但在日常使用中只需要少数几个选项。
ps
最常与下列选项组合一起使用:
BSD形式:
ps aux
a
选项告诉ps
显示所有用户的进程。仅不显示与终端无关的进程和组长的进程。u
代表一种面向用户的格式,提供有关进程的详细信息。x
选项指示ps
列出没有控制终端的进程。这些主要是在启动时启动并在后台运行的进程 。
该命令在标有USER
、PID
、%CPU
、%MEM
、VSZ
、RSS
、STAT
、START
、TTY
、TIME
和CMD
的11个栏目中显示信息。
输出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 77616 8604 ? Ss 19:47 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 19:47 0:00 [kthreadd]
...
我们已经解释了PID
、TTY
、TIME
和CMD
标签。下面是对其他标签的解释:
USER
- 运行该进程的用户。%CPU
- 进程的cpu利用率。%MEM
- 进程的驻留集大小占机器上的物理内存的百分比。VSZ
- 进程的虚拟内存大小,以KiB为单位。RSS
- 进程正在使用的物理内存的大小。STAT
- 进程的状态代码,如Z
(死机),S
(睡眠),和R
(运行)。START
- 命令开始的时间。
f
选项告诉ps
显示从父进程到子进程的树状视图:
ps auxf
ps
命令还允许你对输出进行排序。例如,要根据内存使用量对输出进行排序,你可以使用:
ps aux --sort=-%mem
UNIX的形式:
ps -ef
-e
选项指示ps
显示所有的进程。-f
代表全格式列表,它提供了关于进程的详细的信息。
该命令在八个栏目中显示信息,标注为UID
、PID
、PPID
、C
、STIME
、TIME
和CMD
。
输出
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 19:47 ? 00:00:01 /sbin/init
root 2 0 0 19:47 ? 00:00:00 [kthreadd]
...
没有解释过的标签有以下含义:
UID
- 与USER
相同,是运行该进程的用户。PPID
- 父进程的ID。C
- 和%CPU
一样,是进程的CPU利用率。STIME
- 与START
相同,是指命令开始的时间。
要想只查看以特定用户身份运行的进程,请键入下面的命令,其中linuxize
是用户的名字:
ps -f -U linuxize -u linuxize
用户定义的格式
o
选项允许你在运行ps
命令时指定哪些列被显示出来。
例如,如果只想打印关于PID
和COMMAND
的信息,你可以运行下面的一个命令:
ps -efo pid,comm
ps auxo pid,comm
将ps
与其他命令一起使用
ps
可以通过管道与其他命令结合使用。
如果你想显示ps
命令的输出,每次都要用管道把它送到less
命令中:
ps -ef | less
可以用grep
来过滤ps
命令的输出。例如,为了只显示属于根用户的进程,你可以运行:
ps -ef | grep root
总结
在Linux系统上排除问题时,ps
命令是最常用的命令之一。它有许多选项,但通常情况下,大多数用户使用ps aux
或ps -ef
来收集有关运行进程的信息。
关于ps
的更多信息,请在你的终端输入man ps
。
如果你有任何问题或反馈意见,请随时留言。