top命令


top 命令用于实时显示系统资源使用情况。它可以显示系统摘要信息,以及内核当前正在管理的进程或线程的列表。

top 命令可以实时动态地查看系统的整体运行情况,是一个非常实用的系统性能和运行信息的监测工具。通过 top 命令所提供的互动式界面,用热键可以管理。

Linux top 命令

相对于ps为某个时间点的进程状态,top则可以持续的检测进程进行的状态。默认更新进程资源的时间为5秒。可以使用-d来进行修改。top命令默认使用CPU的使用率作为排序的依据,如果要使用内存使用率的话,则按下M键。恢复P键

语法

top [options]

常用参数

-b  #以批处理模式操作
-c  #显示完整的治命令
-d  #屏幕刷新间隔时间
-I  #忽略失效过程
-s  #保密模式
-S  #累积模式
-i<时间>  #设置间隔时间
-u<用户名>  #指定用户名
-p<进程号>  #指定进程
-n<次数>  #循环显示的次数

top交互命令

h  #显示帮助信息界面
k  #终止一个进程
i  #忽略闲置和僵死进程,这是一个开关式命令
q  #退出程序
r  #重新安排一个进程的优先级别
S  #切换到累计模式
s  #改变两次刷新之间的延迟时间(单位为s),默认值是5s
f或者F  #从当前显示中添加或者删除项目
o或者O  #改变显示项目的顺序
l  #切换显示平均负载和启动时间信息
m  #切换显示内存信息
t  #切换显示进程和CPU状态信息
c  #切换显示命令名称和完整命令行
M  #根据驻留内存大小进行排序
P  #根据CPU使用百分比大小进行排序
T  #根据时间/累计时间进行排序
w  #将当前设置写入~/.toprc文件中

应用举例

top -c查看系统整体运行信息

top - 00:44:49 up 565 days, 12:38,  2 users,  load average: 0.03, 0.09, 0.13
Tasks:  86 total,   1 running,  85 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.8 us,  0.8 sy,  0.0 ni, 96.0 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  3881692 total,   118724 free,  1708796 used,  2054172 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1892868 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
21399 work      20   0 6004700 1.296g   6752 S   3.7 35.0 639:24.06 /home/work/java-current/bin/java -Dsun.misc.URLClassPath.disableJarChecking=+
 4306 root      10 -10  137372  14500   5284 S   2.0  0.4   2303:51 /usr/local/aegis/aegis_client/aegis_11_17/AliYunDun
24092 root      20   0  795856  40192   7648 S   1.3  1.0  33:05.19 /root/filebeat-7.4.2-linux-x86_64/filebeat -e -c /root/filebeat-7.4.2-linux-+
    9 root      20   0       0      0      0 S   0.3  0.0 365:09.14 [rcu_sched]
 1191 root      20   0 2526540  86844   3320 S   0.3  2.2   4146:08 /usr/local/cloudmonitor/jre/bin/java -Djava.compiler=none -XX:-UseGCOverhead+
 1755 work      20   0   84428  29432    996 S   0.3  0.8   1554:04 nginx: worker process
 1756 work      20   0   84296  29436   1000 S   0.3  0.8   1479:33 nginx: worker process
    1 root      20   0   53708   3144   1852 S   0.0  0.1   7:40.55 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.14 [kthreadd]
    3 root      20   0       0      0      0 S   0.0  0.0   6:04.15 [ksoftirqd/0]

上述结果信息详细说明

top - 05:59:56  #当前系统时间
up 1 day    #系统已经运行了1天
1 user    #当前登录用户个数 
load average: 0.06, 0.03, 0.05   #系统负载信息

Tasks:  
92 total  #总进程数 
2 running #正在运行的进程数
90 sleeping   #休眠的进程数
0 stopped     #停止的进程数
0 zombie      #冻结的进程数

%Cpu(s):  
0.0 us  #用户空间占用CPU的百分比 
0.3 sy  #内核空间占用CPU的百分比
0.0 ni  #用户进程空间内改变过优先级的进程占用CPU百分比
99.7 id #空闲CPU百分比
0.0 wa  #等待输入输出的CPU时间百分比
0.0 hi  #硬中断占用CPU的百分比 
0.0 si  #软中断占用CPU的百分比
0.0 st  #虚拟机占用百分比 

KiB Mem :   
995684 total  #物理内存的总量
473120 free   #剩余内存的总量
124960 used   #已使用内存的总量
397604 buff/cache  #内核缓存所使用内存的量

KiB Swap:  
2097148 total   #交换分区的总量
2097148 free    #交换分区剩余的总量    
0 used          #交换分区已使用的总量
698120 avail Mem  #可用内存总量

PID  #进程id
USER #进程所有者
PR  #任务的调度优先级,范围0-31,数值越低,优先级越高
NI  #nice值,范围-20到+19,用于调整进程优先级
VIRT #进程所使用的虚拟内存总量(单位 KB)
RES  #任务已使用的未交换物理内存(单位 KB)
SHR  #共享内存大小(单位 KB)
S    #进程状态
      ' D '=不间断的睡眠
      ' R '=运行
      ' S '=睡眠
      ' T '=被跟踪或停止的
      ' Z '=僵尸
%CPU #CPU的使用率
%MEM #内存使用率
TIME+ #CPU时间
COMMAND #进程名称(命令名/命令行),显示用于启动任务的命令行或关联程序的名称。

将top命令执行两次,然后将信息存储

work@authority-api-v1-6944b5848b-6x5d2:~$ top -b -n 2 > /tmp/top.txt

查看指定进程

work@authority-api-v1-6944b5848b-6x5d2:~$ echo $$
1519
work@authority-api-v1-6944b5848b-6x5d2:~$ top -d 10 -p 1519
top - 01:00:33 up 256 days,  9:29,  0 users,  load average: 17.69, 12.52, 12.51
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s): 39.3 us, 12.0 sy,  0.0 ni, 45.7 id,  2.5 wa,  0.0 hi,  0.4 si,  0.0 st
KiB Mem : 19706059+total,  2849084 free, 94349680 used, 99861824 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 10241943+avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
   1519 work      20   0   21132   4352   2608 S   0.0  0.0   0:00.05 bash

引用

每天学一个 Linux 命令(48):top


文章作者: WangQingLei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WangQingLei !
 上一篇
ps命令 ps命令
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
2022-02-20
下一篇 
awk命令 awk命令
awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输(stdin)、一个或多个文件,或其它命令的输出。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和
2022-02-08
  目录