Linux ps 命令用法详解

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

有很多命令可以帮助你来找到正在运行的进程的信息,但是 ps 以及 top 是最常用的。

在本文中,我们将讨论如何在Linux中使用该 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 在没有控制终端的情况下列出进程。这些主要是在启动时启动并在后台运行的进程。

该命令将显示在标记为 11 个的列的信息 USER , PID , %CPU , %MEM , VSZ , RSS , STAT , START , TTY , TIME 和 CMD 。

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 站全格式房源提供有关进程的详细信息。

此命令将显示在标有 7 列信息 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 命令能够通过管道和其他命令一块使用.

If you want to display the output of the ps command, one page at a time pipe it to the less command:

如果你不想一次显示 ps 太多的输出,请和 less 命令搭配使用

console-bash ps -ef  | less

ps 命令的输出也可以使用 grep 命令过滤结果. 比如只输出 root 用户的进程,可以使用下面的命令

console-bash ps -ef  |  grep root

总结

在解决 Linux 系统上的问题时, ps 命令是最常用的命令之一。它有很多选项,但通常,大多数用户使用 ps aux 或 ps -ef 收集有关正在运行的进程的信息。