Linux 1.3 进程管理命令ps

ps(Process Status)是 Unix 和类 Unix 操作系统(如 Linux 和 macOS)中用于显示当前系统中运行的进程状态的命令。ps 命令非常强大,可以显示各种进程信息,如进程 ID、父进程 ID、用户、CPU 使用率、内存使用率等。

1 基本用法

1.1 显示当前终端的进程

1
ps

这个命令会显示当前终端会话中的进程信息。

1.2 显示所有用户的进程

1
ps aux
  • a:显示所有用户的进程。
  • u:以用户友好的格式显示。
  • x:显示没有控制终端的进程。

1.3 显示指定用户的进程

1
ps -u username

例如,显示 john 用户的进程:

1
ps -u john

1.4 显示指定 PID 的进程

1
ps -p PID

例如,显示 PID 为 1234 的进程:

1
ps -p 1234

2 常用选项

  • -A 或 -e:显示所有进程。
  • -f:显示完整格式的输出。
  • -F:显示更详细的完整格式。
  • -l:显示长格式的输出。
  • -T:显示所有线程。
  • -o:自定义输出格式。
  • -C:按命令名称过滤进程。
  • -g:按会话组或进程组过滤。
  • -t:按终端过滤。

3 输出字段

ps 命令的输出字段通常包括以下内容:

  • PID:进程 ID。
  • PPID:父进程 ID。
  • UID:用户 ID。
  • USER:用户名。
  • %CPU:CPU 使用率。
  • %MEM:内存使用率。
  • VSZ:虚拟内存大小(以 KB 为单位)。
  • RSS:常驻集大小(以 KB 为单位)。
  • TTY:控制终端。
  • STAT:进程状态。
  • START:进程启动时间。
  • TIME:进程使用的 CPU 时间。
  • COMMAND:命令行。

4 自定义输出格式

你可以使用 -o 选项来自定义输出格式。例如,只显示 PID 和命令:

1
ps -o pid,command

5 示例

5.1 显示所有进程的详细信息

1
ps aux

5.2 显示所有进程的完整格式

1
ps -ef

5.3 显示指定命令的进程

1
ps -C sshd

5.4 显示指定用户的进程并自定义输出格式

1
ps -u john -o pid,ppid,user,%cpu,%mem,command

6 常见用法

  1. 查找特定进程

    1
    ps aux | grep sshd

    命令分解
    ps aux:

    • ps:显示当前系统中运行的进程状态。
    • a:显示所有用户的进程。
    • u:以用户友好的格式显示。
    • x:显示没有控制终端的进程。

      综合起来,ps aux 会显示系统中所有用户的进程,包括那些没有控制终端的进程,并以用户友好的格式显示。

      |:
      管道符:将前一个命令的输出作为后一个命令的输入。

      grep sshd:

      grep:用于搜索文本中的模式。

      sshd:要搜索的模式,即字符串 “sshd”。
      命令执行过程

      ps aux 生成一个包含所有进程信息的列表。
      | 将 ps aux 的输出传递给 grep。
      grep sshd 从 ps aux 的输出中筛选出包含字符串 “sshd” 的行。

      结果:

      怎么看?

    • USER: root 表示该进程的所有者是超级用户 root。
    • PID: 946 是进程标识号。
    • %CPU: 0.0 表示该进程目前未使用任何 CPU 资源。
    • %MEM: 0.1 表示该进程占用了大约 0.1% 的系统内存。
    • VSZ: 72304 表示该进程的虚拟内存大小为 72304KB。
    • RSS: 5696 表示该进程的实际物理内存使用量为 5696 KB。
    • TTY: ? 表示该进程没有关联到任何终端。
    • STAT: Ss 表示进程处于睡眠状态(S)且是会话领导者(s)。
    • START: 11月16 表示进程开始于 11 月 16 日。
    • TIME: 0:00 表示进程总共消耗了 0 分钟的 CPU 时间。
    • COMMAND: /usr/sbin/sshd -D 表示这是一个 SSH 守护进程,带有一个 -D 标志,可能表示它正在调试模式下运行。
  2. 显示占用 CPU 最高的前 10 个进程

    1
    ps aux --sort=-%cpu | head -n 11
  3. 显示占用内存最高的前 10 个进程

    1
    ps aux --sort=-%mem | head -n 11

7 总结

ps 命令是一个非常强大的工具,用于查看和管理系统中的进程。通过不同的选项和组合,你可以获得所需的各种进程信息。希望这些示例和解释能帮助你更好地理解和使用 ps 命令。