12.5 查看正在运行的进程的动态更新列表

top

偶尔你会发现Linux计算机突然慢了下来,但从表面却看不出任何原因。可能某个程序正在系统中全速运行,它占用了大量的处理器资源。也可能你启动了一个命令,却发现它占用的CPU处理周期比原本想象的要多得多。要找出导致问题的原因,或者只是想看看系统中有什么程序正在运行,可以使用ps命令,美中不足的是ps不能自己更新信息。其实ps命令提供的只是系统进程的快照而已。

另一方面,top命令提供的则是进程的动态更新的视图,展示系统中正在运行着什么进程,以及每个进程正在使用多少系统资源。很难在书本中体现这种动态效果,因为看不到top命令是如何每隔一秒来更新其显示的,但以下是top命令在其运行的某一时刻显示的内容:

  1. $ top
  2. top - 18:05:03 up 4 days, 8:03, 1 user, load
  3. average: 0.83, 0.82, 0.97
  4. Tasks: 135 total, 3 running, 126 sleeping, 2
  5. stopped, 4 zombie
  6. Cpu(s): 22.9% us, 7.7% sy, 3.1% ni, 62.1% id,
  7. 3.5% wa, 0.1% hi, 0.7% si
  8. Mem: 1036136k total, 987996k used, 48140k free, 27884k buffers
  9. Swap: 1012084k total, 479284k used, 532800k free, 179580k cached
  10. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
  11. COMMAND
  12. 25213 scott 15 0 230m 150m 15m S 11.1 14.9 33:39.34
  13. firefox-bin
  14. 7604 root 15 0 409m 285m 2896 S 10.8 28.2 749:55.75
  15. Xorg
  16. 8378 scott 15 0 37084 10m 7456 S 1.0 1.1 13:53.99
  17. kicker
  18. 8523 scott 15 0 69416 13m 3324 S 0.7 1.3 63:35.14
  19. skype
  20. 29663 scott 15 0 76896 13m 4048 S 0.7 1.3 13:48.20
  21. quanta

top命令输出的前5行显示了大量的系统信息,之后则逐行列出每个正在运行的进程。注意,top命令会自动根据%CPU列的数值对输出进行排序,所以当程序占用的处理器资源变得更多或更少时,它们在top命令列表中的位置也会发生相应变化。

如果想在top命令中关闭程序,只需按k键。这时在列表上方(在以Swap:开始的那一行的后面),会看到以下内容:

  1. PID to kill:

输入想关闭进程的PID(假设为8026),按Enter键,命令会询问要使用什么信号编号(12.4节中讨论过这一问题):

  1. Kill PID 8026 with signal [15]:

top命令默认使用的信号是15。如果乐意用这个默认值,就按Enter键;如果不乐意,就直接输入想使用的信号编号,然后按Enter键。一两秒钟以后,要关闭的进程就会从top显示中消失了。

q键;退出top命令。

top命令非常有用,你将发现自己会经常使用这个命令找出Linux计算机中到底正在运行着什么进程。当对计算机的运行情况有疑问时,top命令也经常能够提供答案。