1 使用方式
参数选项 | 解释说明 |
---|---|
-a | 将进程按照使用内存排序 |
-b | 以批处理的模式显示进程信息,输出结果可以传递给其他程序或写入到文件中。在这种模式下,top命令不会接受任何输入,一直运行直到达到-n选项设置的阈值,或者按Ctrl+C等组合键终止程序 |
-c | 显示进程的整个命令路径,而不是只显示命令名称 |
-d | 指定每两次屏幕信息刷新之间的时间间隔 |
-H | 指定这个可以显示每个线程的情况,否则就是进程的总的状态 |
-i | 不显示闲置或者僵死的进程信息 |
-n | top输出信息更新的次数,完成后将退出top命令 |
-p | 显示指定的进程信息 |
2 举例说明
2.1 显示进程信息
[root@test1 ~]# top #使用top命令通常不接任何参数
top - 16:40:31 up 1:48, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 152112k used, 852300k free, 11312k buffers
Swap: 2031608k total, 0k used, 2031608k free, 42304k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19232 1536 1256 S 0.0 0.2 0:00.76 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
- 第一行,任务队列信息,同uptime命令的执行结果
- 16:40:31 当前系统时间
- up 1:48 系统已经运行了1小时48分
- 3 users 当前有2个用户登录系统
- load average:0.00, 0.00, 0.00 load average后面三个数分别是1分钟、5分钟、15分钟的平均负载情
- 第二行,Tasks为任务(进程)。从上面的信息可以看出,系统现在共有77个进程,其中处于运行状态的有1个,76个在休眠(sleep),stoped状态0个,zombie状态(僵尸)的有0个
- 第三行,CPU状态信息
- 0.0%us 用户空间占用CPU的百分比
- 0.0%sy 内核空间占用CPU的百分比
- 0.0%ni 改变过优先级的进程占用CPU的百分比
- 100.0%id 空闲CPU百分比
- 0.0%wa I/O等待占用CPU的百分比
- 0.0%hi 硬中断(Hardware IRQ)占用CPU的百分比
- 0.0%si 软中断(Software Interrupts)占用CPU的百分比
- 0.0%st 虚拟机占用CPU的百分比
- 第四行,内存状态
- 1004412k total 物理内存总量
- 152112k used 使用中的内存总量
- 852300k free 空闲内存总量
- 11312k buffers 缓冲的内存量
- 第五行,swap交换分区信息
- 2031608k total 交换区总量
- 0k used 使用的交换区总量
- 2031608k free 空闲交换区总量
- 42304k cached 缓存的内存量
- 第六行,空行
- 第七行开始,给出的是各进程(任务)的状态监控
- PID 进程id
- USER 进程所有者
- PR 进程优先级
- NI nice值,负值表示高优先级,正值表示低优先级。
- VIRT 进程使用的虚拟内存总量,单位kb。
- RES 进程使用的、未被换出的物理内存大小,单位为kb。
- SHR 共享内存大小,单位为kb
- S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU 上次更新到现在的CPU时间占用百分比
- %MEM 进程使用的物理内存百分比
- TIME+ 进程使用的CPU时间总计,单位1/100秒
- COMMAND 进程名称(命令名/命令行)
补充:
1)计算真正可用的内存数为:第四行的free+第四行的buffers+第五行的cached。
2)在对内存进行监控时,要时刻关注top命令里第五行swap交换分区的used,如果这个数值还在不断地变化,则说明内核正在不断进行内存和swap的数据交换,这表示内存真的不够用了或者程序运行有内存溢出问题。
3)在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况,显示多核不同核CPU的信息。
4)直接用top无任何参数的方式查看会非常占用系统的资源。可以使用top -b -n1 > test的方式将数据重定向到文件里,再进行查看。
2.2 将进程按照使用内存排序
[root@test1 ~]# top -a #使用参数-a将进程按照使用内存排序
top - 18:07:36 up 42 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 164 total, 1 running, 163 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 153948k used, 850464k free, 10296k buffers
Swap: 2031608k total, 0k used, 2031608k free, 37868k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1236 root 20 0 98.0m 4036 3056 S 0.0 0.4 0:00.20 sshd
1209 postfix 20 0 81524 3424 2544 S 0.0 0.3 0:00.01 qmgr
1202 root 20 0 81272 3400 2496 S 0.0 0.3 0:00.03 master
1208 postfix 20 0 81352 3380 2504 S 0.0 0.3 0:00.03 pickup
2.3 以批处理模式显示进程信息
[root@test1 ~]# top -b #使用参数-b可以看到命令执行结果不停地向下刷新
......
1229 root 20 0 4064 576 496 S 0.0 0.1 0:00.00 mingetty
1231 root 20 0 4064 576 496 S 0.0 0.1 0:00.00 mingetty
1233 root 20 0 4064 576 496 S 0.0 0.1 0:00.00 mingetty
1235 root 20 0 4064 576 496 S 0.0 0.1 0:00.00 mingetty
1236 root 20 0 98.0m 4036 3056 S 0.0 0.4 0:00.22 sshd
1243 root 18 -2 12344 2580 516 S 0.0 0.3 0:00.00 udevd
1244 root 18 -2 12344 2584 516 S 0.0 0.3 0:00.00 udevd
1248 root 20 0 105m 1876 1520 S 0.0 0.2 0:00.04 bash
1301 root 20 0 17384 668 452 S 0.0 0.1 0:00.00 anacron
1318 root 20 0 15032 1340 984 R 0.0 0.1 0:00.01 top
^C #退出使用快捷键Ctrl+C
2.4 显示进程的完整路径
[root@test1 ~]# top -c #使用参数-c显示进程的整个命令路径。
top - 18:19:38 up 54 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 164 total, 1 running, 163 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 154196k used, 850216k free, 10316k buffers
Swap: 2031608k total, 0k used, 2031608k free, 37904k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19232 1484 1220 S 0.0 0.1 0:00.98 /sbin/init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 [kthreadd]
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 [migration/0]
2.5 其他使用补充
//设置执行top命令后的信息刷新时间
[root@test1 ~]# top -d 3 #使用参数-d指定更新周期为3秒,也就是说命令结果每隔3s刷新一次
//设置执行top命令后的信息刷新次数
[root@test1 ~]# top -n 2 #使用参数-n指定更新次数为2次,也就是说命令结果刷新两次后终止退出,-n参数可以和-b参数配合使用
//将top输出结果的全部信息输出到文件中
[root@test1 ~]# top -b -n1 > test #以批处理方式,就刷新1次数据重定向到文件里
[root@test1 ~]# cat test | wc -l
171
[root@test1 ~]# top -n1 > test #如果不是批处理方式,数据量少
[root@test1 ~]# cat test | wc -l
28
//显示指定的进程信息
[root@test1 ~]# top -p 1126 #使用-p选项显示指定进程号的信息
top - 18:31:18 up 1:06, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 154032k used, 850380k free, 10448k buffers
Swap: 2031608k total, 0k used, 2031608k free, 38060k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1126 root 20 0 66604 1184 468 S 0.0 0.1 0:00.00 sshd
//显示指定用户的信息
[root@test1 ~]# top -u testuser #使用-u参数显示指定用户的进程信息
top - 18:33:05 up 1:08, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 165 total, 1 running, 164 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 160388k used, 844024k free, 10796k buffers
Swap: 2031608k total, 0k used, 2031608k free, 41696k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1384 testuser 20 0 105m 1896 1528 S 0.0 0.2 0:00.01 bash
1403 testuser 20 0 140m 3968 2684 S 0.0 0.4 0:00.01 vim