12.5 查看正在运行的进程的动态更新列表
top
偶尔你会发现Linux计算机突然慢了下来,但从表面却看不出任何原因。可能某个程序正在系统中全速运行,它占用了大量的处理器资源。也可能你启动了一个命令,却发现它占用的CPU处理周期比原本想象的要多得多。要找出导致问题的原因,或者只是想看看系统中有什么程序正在运行,可以使用ps
命令,美中不足的是ps
不能自己更新信息。其实ps
命令提供的只是系统进程的快照而已。
另一方面,top
命令提供的则是进程的动态更新的视图,展示系统中正在运行着什么进程,以及每个进程正在使用多少系统资源。很难在书本中体现这种动态效果,因为看不到top
命令是如何每隔一秒来更新其显示的,但以下是top
命令在其运行的某一时刻显示的内容:
$ top
top - 18:05:03 up 4 days, 8:03, 1 user, load
➥average: 0.83, 0.82, 0.97
Tasks: 135 total, 3 running, 126 sleeping, 2
➥stopped, 4 zombie
Cpu(s): 22.9% us, 7.7% sy, 3.1% ni, 62.1% id,
➥3.5% wa, 0.1% hi, 0.7% si
Mem: 1036136k total, 987996k used, 48140k free, 27884k buffers
Swap: 1012084k total, 479284k used, 532800k free, 179580k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
➥COMMAND
25213 scott 15 0 230m 150m 15m S 11.1 14.9 33:39.34
➥firefox-bin
7604 root 15 0 409m 285m 2896 S 10.8 28.2 749:55.75
➥Xorg
8378 scott 15 0 37084 10m 7456 S 1.0 1.1 13:53.99
➥kicker
8523 scott 15 0 69416 13m 3324 S 0.7 1.3 63:35.14
➥skype
29663 scott 15 0 76896 13m 4048 S 0.7 1.3 13:48.20
➥quanta
top
命令输出的前5行显示了大量的系统信息,之后则逐行列出每个正在运行的进程。注意,top
命令会自动根据%CPU
列的数值对输出进行排序,所以当程序占用的处理器资源变得更多或更少时,它们在top
命令列表中的位置也会发生相应变化。
如果想在top
命令中关闭程序,只需按k
键。这时在列表上方(在以Swap:
开始的那一行的后面),会看到以下内容:
PID to kill:
输入想关闭进程的PID(假设为8026
),按Enter键,命令会询问要使用什么信号编号(12.4节中讨论过这一问题):
Kill PID 8026 with signal [15]:
top
命令默认使用的信号是15
。如果乐意用这个默认值,就按Enter键;如果不乐意,就直接输入想使用的信号编号,然后按Enter键。一两秒钟以后,要关闭的进程就会从top
显示中消失了。
按q
键;退出top
命令。
top
命令非常有用,你将发现自己会经常使用这个命令找出Linux计算机中到底正在运行着什么进程。当对计算机的运行情况有疑问时,top
命令也经常能够提供答案。