linux / top 命令详细介绍

1 使用方式

参数选项解释说明
-a将进程按照使用内存排序
-b以批处理的模式显示进程信息,输出结果可以传递给其他程序或写入到文件中。在这种模式下,top命令不会接受任何输入,一直运行直到达到-n选项设置的阈值,或者按Ctrl+C等组合键终止程序
-c显示进程的整个命令路径,而不是只显示命令名称
-d指定每两次屏幕信息刷新之间的时间间隔
-H指定这个可以显示每个线程的情况,否则就是进程的总的状态
-i不显示闲置或者僵死的进程信息
-ntop输出信息更新的次数,完成后将退出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   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值