在Windows下面,我们有资源管理器可以查看CPU、内存等的使用情况及软件和进程信息。Linux下也有一个类似的工具,那就是top命令。top命令可以动态显示系统资源使用情况及进程信息。
动态显示Linux系统任务
top [option]
-d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 -p 通过指定监控进程ID来仅仅监控某个进程的状态。 -q 该选项将使top没有任何延迟的进行刷新。如果是root用户,top将以尽可能高的优先级运行。 -S 指定累计模式 -s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 -i 使top不显示任何闲置或者僵尸进程。 -c 显示整个命令行(默认只显示命令名)
top命令使用比较简单,但显示的信息比较丰富。下面是top命令不使用选项时的输出:
[peter@ibi98 user]$ top
top - 09:43:59 up 425 days, 23:48, 3 users, load average: 0.01, 0.06, 0.19
Tasks: 264 total, 1 running, 258 sleeping, 5 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.4%id, 0.0%wa, 0.1%hi, 0.2%si, 0.0%st
Mem: 32947484k total, 32722596k used, 224888k free, 288824k buffers
Swap: 35061756k total, 313596k used, 34748160k free, 30339920k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16280 peter 20 0 15392 1332 896 R 0.7 0.0 0:00.07 top
112 root 20 0 0 0 0 S 0.3 0.0 261:43.73 kswapd0
1 root 20 0 38412 2900 1056 S 0.0 0.0 4:25.45 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:03.73 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 1:13.54 ksoftirqd/0
第1行是任务负载信息:
top - 09:43:59 up 425 days, 23:48, 3 users, load average: 0.01, 0.06, 0.19 09:43:59 系统当前时间 up 425 days, 23:48 系统连续运行时间 3 users 当前登录用户数量 load average: 0.01, 0.06, 0.19 系统负载(三个数字分别是1、5、15分钟的任务队列平均长度)
第2行是进程信息:
Tasks: 264 total, 1 running, 258 sleeping, 5 stopped, 0 zombie 264 total 启动的进程总数 1 running 正在运行的进程数 258 sleeping 挂起的进程数 5 stopped 停止的进程数 0 zombie 僵尸进程数
第3行是CPU使用情况:
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.4%id, 0.0%wa, 0.1%hi, 0.2%si, 0.0%st 0.0%us 用户态占用的CPU百分比 0.2%sy 内核态占用的CPU百分比 0.0%ni 改变过优先级的进程占用的CPU百分比 99.4%id CPU空闲占比 0.0%wa CPU等待io的时间占比 0.1%hi 硬中断占用的CPU百分比 0.2%si 软中断占用的CPU百分比 0.0%st 虚拟机占用的CPU百分比
第4行是内存使用情况:
Mem: 32947484k total, 32722596k used, 224888k free, 288824k buffers 32947484k total 内存总量 32722596k used 内存已使用量 224888k free 内存剩余量 288824k buffers 用作内核缓存的内存量
第5行是交换分区使用情况:
Swap: 35061756k total, 313596k used, 34748160k free, 30339920k cached 35061756k total 交换分区总量 313596k used 交换分区已使用量 34748160k free 交换分区剩余量 30339920k cached 缓冲的交换分区总量
第7行往后是进程信息:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND PID 进程ID USER 进程所有者 PR 优先级。优先级的修正值=初始值+NI,值越小进程的优先级越高 NI Nice值,即用来修正进程可被执行的优先级的数值,范围从-20到+19(不同系统范围不一样), 正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。 具有最高优先级的程序,其Nice值最低,所以在Linux系统中,值-20意味着一项任务非常重要; 相反,如果任务的Nice为+19,则表示它是一个高尚无私的任务,允许所有其他任务比自己 优先享有更多份额的CPU时间(这也就是Nice的名称的来意)。 VIRT 进程使用的交换分区(虚拟内存)总量 RES 进程使用的、未被换出的物理内存大小 SHR 共享内存大小 S 进程状态(R:可执行状态;S:可中断的睡眠态;D:不可中断的睡眠态) %CPU 上次更新到现在的CPU时间占用百分比 %MEME 进程使用的物理内存百分比 TIME+ 进程使用CPU总时间(单位1/100秒) COMMAND 命令名 下面的信息可按f键后添加: PPID 父进程ID RUSER Real user name(相关概念还有effective user name和saved set-user name, 如想深入了解请查阅网上资料) UID 用户ID GROUP 用户组 TTY 启动进程的终端名 P 最后使用的CPU(仅多个CPU情况) SWAP 进程使用的虚拟内存中被换出的大小 (单位kb) TIME 进程使用CPU总时间(单位1/100秒) CODE 可执行代码占用内存大小 (单位kb) DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小(单位kb) nFLT 页面错误次数 nDRT 最后一次写入到现在,被修改过的页面数 WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 Flags 任务标志,参考
top有一些交互命令可以控制信息显示方式:
h/? 显示帮助画面,给出一些简短的命令总结说明。 k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。 一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。 默认值是信号15。在安全模式中此命令被屏蔽。 i 忽略闲置和僵死进程。这是一个开关式命令。 q 退出程序。 r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。 输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。 S 切换到累计模式。 s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。 输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断 刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。 f/F 从当前显示中添加或者删除项目。 o/O 改变显示项目的顺序。 l 切换显示平均负载和启动时间信息。即显示影藏第一行 m 切换显示内存信息。即显示影藏内存行 t 切换显示进程和CPU状态信息。即显示影藏CPU行 c 切换显示命令名称和完整命令行。 显示完整的命令。 这个功能很有用。 M 根据驻留内存大小进行排序。 P 根据CPU使用百分比大小进行排序。 T 根据时间/累计时间进行排序。 W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
top提供的信息很丰富,需要花一定的时间才能熟悉这些信息的意义。