Linux 中的 ps 命令(列出进程)

评论 0 浏览 0 2019-08-05

在Linux中,一个程序的运行实例被称为进程。偶尔,在Linux机器上工作时,你可能需要找出当前正在运行的进程。

有许多命令可以用来查找有关正在运行的进程的信息,其中pspstreetop是最常用的命令。

本文解释了如何使用ps命令来列出当前正在运行的进程,并显示这些进程的信息。

如何使用 ps 命令

ps命令的一般语法如下::

ps [OPTIONS]

由于历史和兼容性的原因,ps命令接受几种不同类型的选项:

The Linux Command Line Series: An I...
The Linux Command Line Series: An Introduction To Linux Commands
  • 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

这四列标示为PIDTTYTIME,和CMD

  • PID - 进程ID。通常,当运行ps命令时,用户寻找的最重要信息是进程的PID。知道了PID,你就可以杀死一个故障的进程
  • TTY - 进程的控制终端的名称。
  • TIME - 进程的累积CPU时间,以分和秒为单位显示。
  • CMD - 用于启动进程的命令的名称。

上面的输出并不是很有用,因为它没有包含很多信息。当用附加选项启动时,ps命令的真正力量才会出现。

ps命令接受大量的选项,可以用来显示一组特定的进程和有关该进程的不同信息,但在日常使用中只需要少数几个选项。

ps最常与下列选项组合一起使用:

BSD形式

ps aux
  • a选项告诉ps显示所有用户的进程。仅不显示与终端无关的进程和组长的进程。
  • u代表一种面向用户的格式,提供有关进程的详细信息。
  • x选项指示ps列出没有控制终端的进程。这些主要是在启动时启动并在后台运行的进程

该命令在标有USERPID%CPU%MEMVSZRSSSTATSTARTTTYTIMECMD的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]
...

我们已经解释了PIDTTYTIMECMD标签。下面是对其他标签的解释:

  • 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代表全格式列表,它提供了关于进程的详细的信息。

该命令在八个栏目中显示信息,标注为UIDPIDPPIDCSTIMETIMECMD

输出

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命令时指定哪些列被显示出来。

例如,如果只想打印关于PIDCOMMAND的信息,你可以运行下面的一个命令:

ps -efo pid,comm
ps auxo pid,comm

ps与其他命令一起使用

ps可以通过管道与其他命令结合使用。

如果你想显示ps命令的输出,每次都要用管道把它送到less命令中:

ps -ef | less

可以用grep来过滤ps命令的输出。例如,为了只显示属于根用户的进程,你可以运行:

ps -ef | grep root

总结

在Linux系统上排除问题时,ps命令是最常用的命令之一。它有许多选项,但通常情况下,大多数用户使用ps auxps -ef来收集有关运行进程的信息。

关于ps的更多信息,请在你的终端输入man ps

如果你有任何问题或反馈意见,请随时留言。

最后更新2023-09-24
0 个评论
标签