top命令
top命令用于显示系统运行的进程信息,作用类似于windows中的任务管理器,只不过top不是图形化的,而是显示实时文本信息。top是Linux操作系统的一个强大的统计系统信息的命令。
top命令分为三大部分:
- 系统信息:显示系统相关信息
- top交互命令行:这是位与系统信息和进程列表之间的一行空白,用户可以在此进行操作。
- 进程列表:显示进程信息
在命令行执行top
命令得到如下的终端显示:
top - 17:12:14 up 14 min, 2 users, load average: 0.59, 0.94, 0.81
Tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.6 us, 1.5 sy, 0.0 ni, 92.3 id, 0.7 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 3767516 total, 3499504 used, 268012 free, 16272 buffers
KiB Swap: 4079612 total, 0 used, 4079612 free. 2019368 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3065 root 20 0 1613128 120864 34784 S 8.3 3.2 1:16.10 gnome-shell
4000 root 20 0 1245344 155180 35832 S 8.0 4.1 1:26.69 plugin-con+
3523 root 20 0 1474148 361260 57888 S 6.0 9.6 2:02.69 firefox
955 root 20 0 170756 21684 10120 S 3.3 0.6 0:36.29 Xorg
3009 root 9 -11 557020 8080 5144 S 2.7 0.2 0:10.24 pulseaudio
3314 root 20 0 798828 19632 12908 S 2.0 0.5 0:01.40 gnome-term+
3728 qemu 20 0 1140272 226188 8000 S 1.7 6.0 0:40.31 qemu-kvm
3093 root 20 0 462008 6536 3380 S 0.3 0.2 0:04.25 ibus-daemon
5613 root 20 0 0 0 0 S 0.3 0.0 0:00.36 kworker/u1+
5678 root 20 0 1242092 92536 37452 S 0.3 2.5 0:08.61 Typora
9556 root 20 0 0 0 0 S 0.3 0.0 0:00.15 kworker/u1+
10127 root 20 0 123660 1708 1156 R 0.3 0.0 0:00.12 top
1 root 20 0 50580 4392 2324 S 0.0 0.1 0:00.97 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
top
命令本身可以带选项参数:
-b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。
系统信息内容详解
top - 17:12:14 当前系统时间
up 14 min 当前系统已经运行时间
2 users 当前登陆用户数
load average: 0.59, 0.94, 0.81 系统负载,即任务队列的平均长度
Tasks: 231 total 总进程数
1 running 当前运行的进程数
230 sleeping 当前睡眠的进程数
0 stopped 当前停止的进程数
0 zombie 当前僵尸进程数
%Cpu(s): 5.6 us 用户空间占用cpu百分比
1.5 sy 内核空间占用cpu百分比
0.0 ni 用户进程空间内改变过优先级的进程占用cpu百分比
92.3 id 空闲cpu百分比
0.7 wa 等待输入输出的cpu时间百分比
0.0 hi
0.0 si
0.0 st
KiB Mem 以KIB为单为输出内存相关信息
3767516 total 总物理内存量
3499504 used 已经使用的物理内存量
268012 free 空闲的内存总量
16272 buffers 用作内核缓存的内存量
KiB Swap swap(交换分区)分区相关信息,以KIB为单为表示
4079612 total 交换分区分区总量
0 used 已经使用的交换分区量
4079612 free 剩余交换分区量
2019368 cached Mem 缓冲区交换分区总量
提示:
MB的单位以10为底数的指数,MiB是以2为底数的指数,如:1KB=10^3=1000,1MB=10^6=1000000=1000KB,1GB=10^9=1000000000=1000MB,而1KiB=2^10=1024,1MiB=2^20=1048576=1024KiB。
top交互命令行
在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。
h:显示帮助画面,给出一些简短的命令总结说明; k:终止一个进程; i:忽略闲置和僵死进程,这是一个开关式命令; q:退出程序; r:重新安排一个进程的优先级别; S:切换到累计模式; s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;即每次top动态刷新一次的时间差 f或者F:从当前显示中添加或者删除项目; o或者O:改变显示项目的顺序; l:切换显示平均负载和启动时间信息; m:切换显示内存信息; //是否显示内存信息的开关 t:切换显示进程和CPU状态信息; //是否显示cpu信息的开关 c:切换显示命令名称和完整命令行; M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; w:将当前设置写入~/.toprc文件中。
示例:
在top
交互模式下,输入 1 参数,切换显示平均负载和启动时间信息。(就是多核cpu的每一个cpu信息)
top - 17:56:29 up 59 min, 3 users, load average: 0.30, 0.34, 0.43
Tasks: 228 total, 1 running, 227 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.4 us, 0.0 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
%Cpu1 : 3.7 us, 0.4 sy, 0.0 ni, 95.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
%Cpu2 : 0.4 us, 0.4 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
KiB Mem: 3767516 total, 3330080 used, 437436 free, 15932 buffers
//这是系统信息的详细内容,可以看出cpu栏,被详细显示
进程列表
这是进程列表的一部分内容:第一行内容是每一列的进程项,表明是什么含义。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3065 root 20 0 1613128 120864 34784 S 8.3 3.2 1:16.10 gnome-shell
4000 root 20 0 1245344 155180 35832 S 8.0 4.1 1:26.69 plugin-con+
对每个进程项进行解释:
PID 进程ID号
UESR 进程所属用户
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单为KB。VIRT=SWAP+RES
RES 进程使用的,未被换出的物理内存大小,单为KB。RES=code+data
SHR 共享内存大小,单为KB
S 进程状态:
%CPU 上次更新到现在使用的cpu比
%MEM 上次更新到现在使用的内存比
TIME+ 进程使用的cpu总时间,单为1/100秒
COMMAND 命令
其中S表示进程状态,进程状态有:
- D=不可中断的睡眠状态
- R=运行
- S=睡眠
- T=跟踪/停止
- Z=僵尸进程
感受一下top可以显示的所有进程列表项:
PID = Process Id PGRP = Process Group vMj = Major Faults
* USER = Effective Use TTY = Controlling T vMn = Minor Faults
* PR = Priority TPGID = Tty Process G USED = Res+Swap Size
* NI = Nice Value SID = Session Id nsIPC = IPC namespace
* VIRT = Virtual Image nTH = Number of Thr nsMNT = MNT namespace
* RES = Resident Size P = Last Used Cpu nsNET = NET namespace
* SHR = Shared Memory TIME = CPU Time nsPID = PID namespace
* S = Process Statu SWAP = Swapped Size nsUSER = USER namespac
* %CPU = CPU Usage CODE = Code Size (Ki nsUTS = UTS namespace
* %MEM = Memory Usage DATA = Data+Stack (K
* TIME+ = CPU Time, hun nMaj = Major Page Fa
* COMMAND = Command Name/ nMin = Minor Page Fa
PPID = Parent Proces nDRT = Dirty Pages C
UID = Effective Use WCHAN = Sleeping in F
RUID = Real User Id Flags = Task Flags <s
RUSER = Real User Nam CGROUPS = Control Group
SUID = Saved User Id SUPGIDS = Supp Groups I
SUSER = Saved User Na SUPGRPS = Supp Groups N
GID = Group Id TGID = Thread Group
GROUP = Group Name ENVIRON = Environment v