12.1 查看当前正在运行的所有进程
ps aux
每当正在运行的某个程序发生死锁,并停止响应时,你就得手工关闭它;或者,你可能想知道某个用户正在运行什么程序;又或者,你只可能想知道自己的计算机上当前正在运行的进程的一些情况。对于上述这些情况,以及其他很多情况,解决的方法就是使用ps
命令列出计算机上当前打开的进程。
遗憾的是,ps
命令有很多版本,它们各自的选项种类也各不相同。甚至根据是否在这些选项前面加了连字符(-
),它们的含意也各不相同,例如u
和-u
就代表完全不同的两件事。到目前为止,本书都非常严格地在所有选项前面加了连字符(-
),但是对于ps
命令,为了让操作更加容易和统一,它的选项就不要求使用连字符。
要查看系统中用户正在运行的所有进程,可以在ps
命令后面使用以下选项:a
(表示所有用户)、u
(以面向用户的格式显示,或显示拥有每个进程的用户)、x
(没有控制tty①或终端屏幕的进程,“显示每个进程”的另一种方法)。预先提示一下,屏幕上将会飞驰而过相当长的列表内容: 这台计算机上会显示132行。
① tty通常用于指各种类型的终端设备。——译者注
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START
➥TIME COMMAND
scott 24224 4.1 4.2 1150440 44036 ? R 11:02
➥12:03 /home/scott/.cxoffice/bin/wine-preloader
scott 5594 0.0 0.1 3432 1820 pts/6 S+ 12:14
➥0:00 ssh scott@humbug.machine.com
scott 14957 0.3 7.5 171144 78628 ? Sl 13:01
➥0:35 /usr/lib/openoffice2/program/soffice.bin
➥-writer
scott 12369 0.0 0.0 0 0 ? Z 15:43
➥0:00 [wine-preloader] <defunct>
scott 14680 0.0 0.1 3860 1044 pts/5 R+ 15:55
➥0:00 ps aux
ps
命令能提供很多信息,包括进程的拥有者、唯一的进程ID编号(PID,用于标识进程)、进程正在使用的CPU百分比(%CPU
)和内存百分比(%MEM
)、进程的当前状态(STAT
)及进程的名称。
STAT
列用不同的字母表示进程的状态,最重要的一些状态如表12-1所示。
表 12-1
STAT 字母 | 含 义 |
---|---|
R | 运行(running) |
S | 休眠(sleeping) |
T | 停止(stopped) |
Z | 僵尸②(zombie) |
② 表示该进程已经终止,但其父进程却无法正常终止它,造成“僵尸”进程的状态。——译者注
Z
是个坏消息,因为它意味着进程基本上一直处于挂起状态,不能停止(幸运的是,这并不意味着没有解决问题的办法)。如果某个程序有问题,ps
标明其状态为Z
,这时或许只有重启计算机才能完全关闭这个程序。
因为ps aux
提供了很多数据,所以要找到正在搜索的那个程序可能有点难。
将ps aux
的输出通过管道传递给grep
,这是一种对特定命令的结果进行限制的简单方法。
$ ps aux | grep [f]irefox
scott 25205 0.0 0.0 4336 8 ? S
➥Feb08 0:00 /bin/sh /opt/firefox/firefox
scott 25213 1.1 10.9 189092 113272 ? Rl
➥Feb08 29:42 /opt/firefox/firefox-bin
现在知道了正在计算机上运行的Firefox实例,包括谁在运行这个程序、加载这个程序占用了计算机的多少资源,以及这个程序已经运行了多长时间。多么有用的信息!
提示 为什么搜索的是
[f]irefox
,而不是firefox
呢?可以在9.11节找到答案。