linux top命令


2.top观察进程状态的动态变化

回到顶部
我们上面通过ps观察进程的状态,其实只是在执行ps命令那个时间点的进程状态信息。 如果进程的状态发生变化,通过ps命令是无法感知到的,除非持续不断的执行ps来观察进程的状态改变。但是这样真的太麻烦了,即麻烦又不现实。 而通过top命令我们就可以很容易的持续观察系统中进程的状态变化。top命令常用格式如下:
[root@initroot ~]# top [-d 数字] | top [-bnp]
选项与参数:
-d: 后面接数字,单位为秒, 表示top刷新的时间频率。默认是5秒;
-b: 以批次的方式执行top, 还有更多的参数可以使用喔! 通常会搭配数据流重导向来将批次的结果输出成为文件。
-n: 与-b搭配,意义是,需要进行几次top的输出结果。
-p: 指定某些个PID来进行观察监测而已。
其实 top 的功能非常多!可以用的按键也非常的多!可以参考 man top 的内部说明文件! 这里仅是列出一些自己常用的选项而已。 利用top观察系统运行状态信息:
[root@initroot ~]# top

top - 13:43:33 up  4:25,  1 user,  load average: 0.58, 0.47, 0.47
Tasks: 182 total,   2 running, 148 sleeping,   0 stopped,   1 zombie
%Cpu(s): 15.4 us,  2.5 sy,  0.0 ni, 81.5 id,  0.4 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  5069456 total,   276332 free,  2437764 used,  2355360 buff/cache
KiB Swap:  2097148 total,  2096880 free,      268 used.  2300408 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                                                    
   10 root      20   0       0      0      0 R  6.2  0.0   0:16.85 rcu_sched                                                                                                                                                                  
  964 root      20   0  643264 159536  87232 S  6.2  3.1   2:55.09 Xorg                                                                                                                                                                       
    1 root      20   0  159856   9104   6684 S  0.0  0.2   0:01.16 systemd                                                                                                                                                                    
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                                                   
    3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp                                                                                                                                                                     
    4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_par_gp                                                                                                                                                                 
    6 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:0H-kb                                                                                                                                                            
    8 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 mm_percpu_wq                                                                                                                                                               
    9 root      20   0       0      0      0 S  0.0  0.0   0:01.82 ksoftirqd/0                                                                                                                                                                
   11 root      rt   0       0      0      0 S  0.0  0.0   0:00.04 migration/0                                                                                                                                                                
   12 root     -51   0       0      0      0 S  0.0  0.0   0:00.00 idle_inject/0                                                                                                                                                              
   13 root      20   0       0      0      0 I  0.0  0.0   0:00.00 kworker/0:1-eve                                                                                                                                                            
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 cpuhp/0                                                                                                                                                                    
   15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs                                                                                                                                                                  
   16 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 netns                                                                                                                                                                      
   17 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_tasks_kthre                                                                                                                                                            
   18 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kauditd                                                                                                                                                                    
   19 root      20   0       0      0      0 S  0.0  0.0   0:00.01 khungtaskd                                                                                                                                                                 
   20 root      20   0       0      0      0 S  0.0  0.0   0:00.00 oom_reaper                                                                                                                                                                 
   21 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 writeback                                                                                                                                                                  
   22 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kcompactd0                                                                                                                                                                 
   23 root      25   5       0      0      0 S  0.0  0.0   0:00.00 ksmd                                                                                                                                                                       
   24 root      39  19       0      0      0 S  0.0  0.0   0:00.00 khugepaged                                                                                                                                                                 
   25 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 crypto                                                                                                                                                                     
   26 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kintegrityd                                                                                                                                                                
   27 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kblockd                                                                                                                                                                    
   28 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 tpm_dev_wq                                                                                                                                                                 
   29 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 ata_sff                                                                                                                                                                    
   30 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 md                                                                                                                                                                         
   31 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 edac-poller                                                                                                                                                                
   32 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 devfreq_wq                                                                                                                                                                 
   33 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 watchdogd                                                                                                                                                                  
   37 root      20   0       0      0      0 S  0.0  0.0   0:00.11 kswapd0                                                                                                                                                                    
   38 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/u3:0                                                                                                                                                               
   39 root      20   0       0      0      0 S  0.0  0.0   0:00.00 ecryptfs-kthrea                                                                                                                                                            
  128 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kthrotld                                                                                                                                                                   
  129 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 acpi_thermal_pm                                                                                                                                                            
  130 root      20   0       0      0      0 S  0.0  0.0   0:00.01 scsi_eh_0                                                                                                                                                                  
  131 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 scsi_tmf_0                                                                                                                                                                 
  132 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_1                                                                                                                                                                  
  133 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 scsi_tmf_1                                                                                                                                                                 
  136 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 ipv6_addrconf                                                                                                                                                              
  147 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kstrp                                                                                                                                                                      
  166 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 charger_manager                                                                                                                                                            
  167 root       0 -20       0      0      0 I  0.0  0.0   0:01.32 kworker/0:1H-kb                                                                                                                                                            
  210 root      20   0       0      0      0 S  0.0  0.0   0:00.02 scsi_eh_2                                                                                                                                                                  
  211 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 scsi_tmf_2                                                                                                                                                                 
  214 root     -51   0       0      0      0 S  0.0  0.0   0:07.19 irq/18-vmwgfx                                                                                                                                                              
  215 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 ttm_swap                                                                                                                                                                   
  334 root      20   0       0      0      0 S  0.0  0.0   0:00.46 jbd2/sda1-8     
不同于 ps 是静态的结果输出, top 这个程序可以持续的监测 整个系统的进程工作状态。top默认会5秒钟刷新一次,可以用-d指定top的刷新时间,例如2秒钟刷新一次:top -d 2。 top显示的画面主要分为上下两个部分,上面部分为整个系统的资源使用状态,下半部分列出了每个进程的状态信息。
仔细观察会发现上下两个部分的中间由空行隔开,其实这个可不止是空行,这还是一个指令提示输入行。 在top界面环境下还可以执行很多按键指令,某些按键指令需要用户输入,这时候这个空行就变成指令参数输入行了。
常用的按键指令有:
? :显示在top当中可以输入的按键指令;
P :以CPU的使用资源排序显示;
M :以Memory的使用资源排序显示;
N :以PID来排序!
T :由该Process使用的CPU时间累积(TIME+)排序。
k :给予某个PID一个讯号(signal)
r :给予某个PID重新制订一个nice值。
q :离开top软件的按键。
基本上总共有六行,显示的内容依序是:
第一行(top...):这一行显示的信息分别为:
o 目前的时间,亦即是 00:53:59 那个项目;
o 开机到目前为止所经过的时间,亦即是 up 6:07, 那个项目;
o 已经登入系统的用户人数,亦即是 3 users, 项目;
o 系统在 1, 5, 15 分钟的平均工作负载。我们在第十五章谈到的 batch 工作方式为负载小于 0.8 就是这个负载啰! 代表的是 1, 5, 15 分钟,系统平均要负责运作几个进程(工作)的意思。 越小代表系统越闲置,若高于 1 得要注意你的系统进程是否太过繁复了!
第二行(Tasks...):显示的是目前进程的总量与个别进程在什么状态(running, sleeping, stopped, zombie)。 比较 需要注意的是最后的 zombie 那个数值,如果不是 0 !好好看看到底是那个 process 变成僵尸了吧?
第三行(%Cpus...):显示的是 CPU 的整体负载,每个项目可使用 ? 查阅。需要特别注意的是 wa 项目,那 个项目代表的是 I/O wait, 通常你的系统会变慢都是 I/O 产生的问题比较大!因此这里得要注意这个项目 耗用 CPU 的资源喔! 另外,如果是多核心的设备,可以按下数字键『1』来切换成不同 CPU 的负载率。
第四行与第五行:表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。 再次重申,要注意的是 swap 的使用量要尽量的少!如果 swap 被用的很大量,表示系统的物理内存实在不足!
第六行:这个是当在 top 程序当中输入指令时,显示状态的地方。
至于top下半部分的画面,则是每个 process状态信息情况。比较需要注意的是:
PID :每个 process 的 ID 啦!
USER:该 process 所属的使用者;
PR :Priority 的简写,进程的优先执行顺序,越小越早被执行;
NI :Nice 的简写,与 Priority 有关,也是越小越早被执行;
%CPU:CPU 的使用率;
%MEM:内存的使用率;
TIME+:CPU 使用时间的累加;
top 默认使用 CPU 使用率 (%CPU) 作为排序的重点,如果你想要使用内存使用率排序,则可以按 下M键, 若要恢复则按下P即可。如果想要离开top则按下q吧!如果你想要将top的结果输出成为文件时, 可以这样做:
将top的信息进行 2 次,然后将结果输出到 /tmp/top.txt
[root@initroot ~]# top -b -n 2 > /tmp/top.txt
这样就可以将 top 的信息存到 /tmp/top.txt 文件中了。
这可以帮助你将某个时段 top 观察到的结果存成文件,可以用在你想要在系统后台底下执行。 由于是后台执行,与终端机的屏幕大小无关,因此可以得到全部的进程画面!
可以指定进程的PID,只观察某个进程的状态。
$$变量为当前进程的PID,可以使用echo显示,然后用top持续观察该进程的状态:
[root@initroot ~]# echo $$
6632                                 #bash进程的PID
[root@initroot ~]# top -d 2 -p 6632

top - 14:03:04 up  4:44,  1 user,  load average: 0.31, 0.33, 0.34
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s): 14.9 us,  4.1 sy,  0.0 ni, 81.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  5069456 total,   310236 free,  2405552 used,  2353668 buff/cache
KiB Swap:  2097148 total,  2096880 free,      268 used.  2330928 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                   
 6632 root      20   0   24400   5228   3660 S  0.0  0.1   0:00.02 bash    
如果想要在 top 底下进行一些动作呢? 比方说,修改 NI 这个数值呢?可以这样做:
上面的 NI 值是 0 ,想要改成 10 的话?在top 画面当中直接按下 r 之后,会出现如下的图样:
              top - 14:09:31 up  4:51,  1 user,  load average: 0.66, 0.49, 0.39
              Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
              %Cpu(s): 18.0 us,  4.6 sy,  0.0 ni, 77.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
              KiB Mem :  5069456 total,   309052 free,  2406012 used,  2354392 buff/cache
              KiB Swap:  2097148 total,  2096880 free,      268 used.  2328520 avail Mem 
              PID to renice [default pid = 6632]   #这里出现光标提示符,等待用户输入,根据提示输入相应的参数信息即可
                PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                   
               6632 root      20   0   24400   5228   3660 S  0.0  0.1   0:00.02 bash 
在指令提示行根据指令提示,输入相关参数即可修改进程的优先级。一般来说,如果想要找出最损耗 CPU 资源的那个进程时,大多使用的就是 top 这支程序啦!然后强制以 CPU 使用资源来排序 (在 top 当中按下 P 即可), 就可以很快的知道啦!

top命令可以实时显示系统的运行时信息

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读