ps 查看系统进程快照

ps 命令用于查看当前系统进程的快照,使用该命令可以确定有哪些进程正在运行和运行的状态、哪些进程占用了过多的资源等等。

如果想实时更新查看系统的状态,可以使用 top 命令 ,同时可以搭配 kill 命令 随时暂停、终止进程的运行。

命令格式:

ps [OPTION]...

常用选项:

ps 命令支持三种不用的语法格式:

  1. UNIX 风格,选项前必须有“-”连字符
  2. BSD 风格,选项前不能有“-”连字符
  3. GNU 风格,选项前有两个“-”连字符
-e
    显示所有的进程

-C
    查找指定的进程,只能实现完全匹配查找,并不实用

-f
    显示 UID, PPIP, C 与 STIME 栏

-l
    显示详细的进程状态

-u <UID>
    显示属于该用户的进程状况,默认为当前用户。

使用实例:

# 默认输出(几乎没用)
[Linux]$ ps
    PID TTY          TIME CMD
   6172 pts/0    00:00:00 bash
   7017 pts/0    00:00:00 ps

# 查找指定进程
[Linux]$ ps -f -C gvim
UID          PID    PPID  C STIME TTY          TIME CMD
glenn       6977    1279  1 15:33 ?        00:00:08 gvim -f new.txt

# 查看所有进程
[Linux]$ ps -ef
UID     PID    PPID  C STIME TTY        TIME CMD
root      1       0  0 09:30 ?      00:00:04 /sbin/init
root      2       0  0 09:30 ?      00:00:00 [kthreadd]
root      3       2  0 09:30 ?      00:00:00 [rcu_gp]
...

# 查看详细的进程使用状态
[Linux]$ ps -aux
USER   PID %CPU %MEM    VSZ   RSS TTY   STAT START   TIME COMMAND
root     1  0.0  0.0 164068 10516 ?     Ss   09:30   0:04 /sbin/init
root     3  0.0  0.0      0     0 ?     I<   09:30   0:00 [rcu_gp]
root     4  0.0  0.0      0     0 ?     I<   09:30   0:00 [rcu_par_gp]
...

输出说明:

  • USER: 属主用户 ID
  • PID: 进程 id
  • %CPU: 该进程使用的 CPU 百分比
  • %MEM: 该进程使用的物理内存百分比
  • VSZ: 该进程使用的虚拟内存量
  • RSS: 该进程使用的固定内存量
  • TTY: 该进程在那个终端机上面运作,若与终端机无关,则显示 ?
  • STAT: 该进程的状态:
    • D: 无法中断的休眠状态 (通常 IO 的进程)
    • R: 正在执行中
    • S: 睡眠状态
    • T: 暂停执行
    • Z: 不存在但暂时无法消除(zombie 疆尸进程)
    • W: 没有足够的记忆体分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有记忆体分页分配并锁在记忆体内 (实时系统或 I/O)
  • START: 进程被触发的时间
  • TIME: 进程执行的时间
  • COMMAND: 进程执行的指令