如何列出系统上运行的所有进程

“ps命令”是一个很古老的命令,经过多次升级迭代。它可以接收不同语法的选项。
比如:UNIX语法(选项前面是减号-
BSD语法(选项前面没有符号)
和GNU语法(选项前有两个减号--)。

以下命令将显示系统上的所有运行进程。

$ps aux

请注意,这是使用BSD语法(没有破折号)。

  • A- 来自所有用户的进程。
  • U- 显示用户面向的格式(显示有关运行进程的其他信息)。
  • x- 不属于任何tty的列表进程。

如果有很多进程,可以使用less或者more使输出更易于管理。

$ps aux | less

输出结果中:

  • USER- 进程在运行的用户。
  • PID- 进程ID(每个进程都被分配了一个数字)。
  • %CPU- 该过程利用的CPU百分比量度。
  • %MEM- 该过程利用的内存百分比是多少。
  • vsz- 过程的虚拟内存大小。
  • RSS- 过程使用的物理内存大小。
  • tty- 哪个流程(终端屏幕)的过程绑定到,或者没有。
  • stat- 过程的国家代码;有许多但有些常见的是s(睡觉)和r(运行步)。
  • START- 过程开始时的时间。
  • TIME- 过程使用的累计CPU时间。
  • COMMAND- 用于产生运行进程的完整命令。

使用ps命令示例

通常使用以下UNIX语法代替我们上面显示的BSD语法。
它更简洁,更容易阅读。

$ps -ef
  • -e- 显示所有用户的运行进程。
  • -f- 显示全格式列表(显示有关运行进程的其他信息)。

输出结果中,基本和BSD语法相同,只有几列不一样:

  • UID- 用户ID,与BSD语法的“USER”相同。
  • ppid- 父过程的进程ID。
  • C- CPU利用率,与BSD语法中的“%CPU”相同。
  • Stime- 开始时间,与BSD语法中的“START”相同。

如果您不需要这么详细信息,只需使用“-e”选项即可。即“ax”选项(BSD语法)。

$ps -e
PID TTY          TIME CMD
  1 ?        00:00:02 systemd
  2 ?        00:00:00 kthreadd
  3 ?        00:00:00 rcu_gp
........
$ps ax
PID TTY      STAT   TIME COMMAND
  1 ?        Ss     0:02 /sbin/init splash
  2 ?        S      0:00 [kthreadd]
  3 ?        I<     0:00 [rcu_gp]

“PS”最棒的功能之一是我们可以根据所需的任何列排序。

例如,按所使用的内存大小排序:

$ps aux --sort=-%mem | less

或者按CPU利用率排序:

$ps aux --sort=-%cpu | less

检查某个进程是否正在运行,或者查看进程ID:

$ps aux | grep apache2

BSD中的“o”选项,(UNIX -o选项)允许我们指定我们要查看的列。

$ps axo pid,%cpu,%mem,command | less

示例,使用UNIX语法根据CPU使用情况排序。

$ps -eo pid,ppid,c --sort=-c | less
Linux ps命令

ps命令是默认命令行实用程序,它可以为我们提供有关这些进程的许多有用的信息,包括它们的PID(进程ID),TTY,运行命令或者应用程序,以及更多。

日期:2020-07-07 20:56:48 来源:oir作者:oir