IT #Linux #进程管理

我们常用 ps 命令(process status)来列出Linux系统下的进程信息。ps 参数选项繁多,版本也很杂,但对系统管理员来说我们并不需要掌握那么多,只需要记住少数几个主要用法,就可以在绝大多数场景下应用了。

ps 不带任何选项的话,只能输出当前终端,当前用户下的前台命令,几乎没有什么用处。 常用的可能有:

ps aux

选项中 a、u、x是可以分开的,虽然使用时没有必要分开,但分开理解却有必要:

a 选项表示和当前终端有关的,所有用户的进程,字段会多出一个 STAT 来显示进程的状态

u 选项表示面向用户的格式(user-oriented format),会输出更多的字段,它们大多对系统管理非常有用,包括:

  • USER:该进程的所有者用户名。这能让你知道哪个用户启动了这个进程。

  • PID:进程的 ID 号,是系统中每个进程的唯一标识符,方便对特定进程进行操作,比如终止进程。

  • %CPU:进程占用 CPU 的百分比,反映了该进程对 CPU 资源的使用程度。

  • %MEM:进程占用内存的百分比,可用于了解进程对系统内存资源的消耗情况。

  • VSZ:进程使用的虚拟内存大小,单位是 KB。虚拟内存是进程可以使用的内存空间,也就是被分配的空间,包括物理内存和交换空间。

  • RSS:进程实际占用的物理内存大小,单位是 KB。这是进程真正在物理内存中占用的空间。

  • TTY:与进程关联的终端设备。如果显示为 ?,表示该进程没有关联终端。

  • STAT:进程的状态,常见的状态有 R(运行中)、S(睡眠)、D(不可中断睡眠)、Z(僵尸进程)等。

  • START:进程启动的时间。

  • TIME:进程累计使用 CPU 的时间。

  • COMMAND:启动该进程所使用的命令行

x 选项表示将所有没有终端的进程都显示出来(包括TTY显示为 ? 的进程)

ps alx

l 选项可以替代u选项输出不一样的长格式,没有用户名,内存和CPU占用信息,增加了PPID,优先级, nice 值和等待资源类型的 WCHAN (wait channel缩写),对排查性能问题时比较有用。

ps -ef

也算一个比较常用的选项组合,-e 可以近似看作是前面 ax 的组合,-e可以和 f 或 l 选项组合输出更多有用的字段。但和 u 组合需要注意,-u 和 u 是不一样的,一定要组的话只能:ps u -e

注意这里的选项有 - ,和没有 - 的含义是有区别的,而且在不同的Linux 版本下含义可能有变。

格式化输出选项

  • f:以树形结构显示进程间的关系,能清晰地展示进程的父子关系,便于理解进程的层次结构。

    • 示例:ps axf 会以树形结构展示所有与终端关联的进程及其父子关系。
  • o:自定义输出格式,允许用户指定要显示的列信息。用户可以根据自己的需求灵活选择展示哪些进程信息。

    • 示例ps -eo pid,user,comm 会只显示进程的 PID、所有者用户和命令名称这三列信息。

进程排序选项

  • --sort:对输出的进程信息进行排序。可以按照 CPU 使用率、内存使用率等多种指标进行排序,方便用户快速找到资源占用较高的进程。

    • 示例:ps aux --sort=-%cpu | head 会按照 CPU 使用率从高到低对进程进行排序(- 表示降序)。扩展:ps aux --sort=-%mem | head

特定进程选择选项

  • p:指定要显示的进程 ID。当你只想查看特定进程的信息时,可以使用该选项。

    • 示例:ps -p 1234 会只显示进程 ID 为 1234 的进程信息。
  • C:根据命令名称筛选进程,只显示指定命令名称的进程信息。

    • 示例:ps -C sshd 会只显示名为 sshd 的进程信息。不过更好用的是:ps au -C sshd