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

时间:2020-03-05 15:29:11  来源:igfitidea点击:

在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”列出没有控制终端的进程。这些主要是在启动时启动并在后台运行的进程。

该命令在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”代表完整格式的列表,其中提供了有关过程的详细信息。

该命令在标记为'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'相同。

要仅查看以特定用户身份运行的进程,请键入以下命令,其中“ theitroad”是用户名:

ps -f -U theitroad -u theitroad

用户定义格式

使用“ o”选项可以指定在运行“ ps”命令时显示哪些列。

例如,要仅打印有关'PID'和'COMMAND'的信息,我们将运行以下命令之一:

ps -efo pid,comm
ps auxo pid,comm

与其他命令一起使用“ ps”

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

如果要显示“ ps”命令的输出,请一次将一页传递给“ less”命令:

ps -ef | less

可以使用'grep'过滤'ps'命令的输出。

例如,要仅显示属于root用户的进程,请运行:

ps -ef | grep root