在Linux中,程序的运行实例称为进程。有时,在Linux机器上工作时,您可能需要找出当前正在运行的进程。

您可以使用许多命令来查找有关正在运行的进程的信息,ps并且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

四列分别标记PIDTTYTIMECMD

  • PID-进程ID。在大多数情况下,运行ps命令时,用户正在寻找的最重要的信息是过程PID。了解PID可以使您终止故障进程。
  • TTY -进程的控制终端的名称。
  • TIME -进程的累积CPU时间,以分钟和秒为单位。
  • CMD -用于启动进程的命令的名称。

上面的输出不是很有用,因为它包含的信息不多。当使用其他选项启动ps时,该命令的真正功能才会出现。

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

ps 最常与以下选项组合使用:

BSD形式

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

该命令将显示在标记为11个的列的信息USERPID%CPU%MEMVSZRSSSTATSTARTTTYTIMECMD

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(正在运行).. etc
  • START -命令开始的时间。

要打印进程树,请添加f选项。这将告诉ps您显示父进程到子进程的树视图。

ps auxf

ps命令还允许您对输出进行排序。例如,要根据内存使用情况对输出进行排序,可以使用:

ps aux --sort=-%mem

UNIX形式

ps -ef
  • e选项指示ps显示所有进程。
  • f提供有关进程的详细信息。

此命令将显示在标有11列信息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,命令启动的时间。

要仅查看以特定用户身份运行的进程,请使用以下命令,其中myfreax用户名:

ps -f -U myfreax -u myfreax

用户定义格式

o选项允许您指定运行ps命令时将显示哪些列。

例如,要仅打印有关的信息PIDCOMMAND您将运行以下命令之一:

ps -efo pid,comm

## Using `ps` With Other Commands

`ps` can be used in combination with other commands through piping.  

If you want to display the output of the `ps` command, one page at a time pipe it to the [`less`](https://www.myfreax.com/less-command-in-linux/) command:

ps -ef | less

The output of the `ps` command can be filtered with [`grep`](https://www.myfreax.com/how-to-use-grep-command-to-search-files-in-linux/). For example, to show only the process belonging to the root user you would run:

结论

ps对Linux系统上的问题进行故障排除时,该命令是最常用的命令之一。它有很多选项,通常大多数用户都使用ps auxps -ef来收集有关正在运行的进程的信息。

有关所有可用ps选项的信息,请man ps在终端中输入。

如果您有任何问题或反馈,请随时发表评论。

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持