每天一个Linux命令(38)top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
(1)用法:
用法: top [参数]
top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序,而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
(2)功能:
功能: top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
(3)选项参数:
1) -b 批处理
2) -c 显示完整的治命令
3) -I 忽略失效过程
4) -s 保密模式
5) -S 累积模式
6) -i<时间> 设置间隔时间
7) -p<进程号> 指定进程
8) -n<次数> 循环显示的次数
(4)实例:
1)[sunjimeng@localhost ~]$ top
[sunjimeng@localhost ~]$ top
top - 18:05:44 up 6:49, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 417 total, 1 running, 416 sleeping, 0 stopped, 0 zombie %Cpu(s): 4.8 us, 1.9 sy, 0.0 ni, 93.2 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 2013872 total, 894192 free, 612372 used, 507308 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1193280 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3265 sunjime+ 20 0 1823060 301072 44248 S 59.8 14.9 29:14.18 gnome-shell 2004 root 20 0 205212 34256 8036 S 13.0 1.7 6:01.59 Xorg 13378 sunjime+ 20 0 796120 22176 14180 S 4.0 1.1 0:01.98 gnome-terminal- 14386 sunjime+ 20 0 130288 2096 1268 R 0.7 0.1 0:00.29 top 3302 sunjime+ 20 0 461684 6024 3552 S 0.3 0.3 1:09.70 ibus-daemon 12151 root 20 0 0 0 0 S 0.3 0.0 0:01.40 kworker/0:0 1 root 20 0 60052 7796 2656 S 0.0 0.4 0:06.50 systemd 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 0:05.55 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.74 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1 11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6 16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/7
显示结果的解释:
1.第一行,任务队列信息,同 uptime 命令的执行结果
【top - 18:05:44】 当前系统的时间
【up 6:49 】 从6:49分开始运行,如果已经运行3天,则会显示 up 3 days。
【2 users 】 两个用户
【load average: 0.00, 0.01, 0.05】 系统负载,即任务队列的平均长度
2.第二行,Tasks — 任务(进程)
【Tasks: 417 total】 总进程数
【1 running】 正在运行的进程数
【416 sleeping】 睡眠的进程数
【0 stopped】 停止的进程数
【0 zombie】 冻结的进程数
3.第三行,cpu状态信息
【%Cpu(s): 4.8 us】 用户空间占用CPU百分比
【1.9 sy】 内核空间占用CPU的百分比
【KiB Mem : 2013872 total】 物理内存总量
【0.0% ni】 用户进程空间内改变过优先级的进程占用CPU百分比
【93.2 id】 空闲CPU百分比
4.第四行,内存状态
【KiB Mem : 2013872 total】 物理内存总量,2G
【612372 used】 已使用内存总量
【894192 free】 空闲内存总量
【507308 buff/cache】 缓存的内存量
5.第五行,swap交换分区信息
【KiB Swap: 2097148 total】 交换区总量
【2097148 free】 空闲的交换区总量
【0 used】 使用的交换区总量
【1193280 avail Mem】 缓冲的交换区总量,即可用交换区内存
6.空行
7.各个标题的意思:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
2)[sunjimeng@localhost ~]$ uptime 同top命令第一行的任务队列信息执行结果
[sunjimeng@localhost ~]$ uptime 18:25:18 up 7:09, 2 users, load average: 0.04, 0.06, 0.05
3)[sunjimeng@localhost ~]$ top -p 2004 显示特定进程号的所有进程信息
[sunjimeng@localhost ~]$ top -p 2004 top - 18:55:18 up 7:39, 2 users, load average: 0.40, 0.21, 0.12 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 11.2 us, 3.4 sy, 0.0 ni, 85.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 2013872 total, 874012 free, 632484 used, 507376 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1173212 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2004 root 20 0 203712 32824 8084 S 6.7 1.6 6:16.16 Xorg
(5)其他的一些范例:
[sunjimeng@localhost ~]# top -b # 以批处理模式显示程序信息
[sunjimeng@localhost ~]# top -S # 以累积模式显示程序信息
[sunjimeng@localhost ~]# top -n -2 # 设置信息更新次数,表示更新2次后终止更新显示
[sunjimeng@localhost ~]# top -d -3 # 设置信息更新时间,表示更新周期为3秒