Linux 基本工具(top)
top
是一个命令行程序, 用于实时监视系统的运行情况, top
命令展示的信息比较丰富, 我们分类介绍下, 先来看看top命令展示的信息
root@server:~# top [2/1909]
top - 18:41:48 up 1 day, 2:21, 3 users, load average: 0.12, 0.08, 0.09
Tasks: 157 total, 1 running, 156 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.1 us, 0.2 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4045996 total, 1009596 free, 1579968 used, 1456432 buff/cache
KiB Swap: 998396 total, 998396 free, 0 used. 2164548 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1627 rabbitmq 20 0 2205672 57648 5204 S 3.3 1.4 67:14.58 beam.smp
23655 root 20 0 0 0 0 S 0.3 0.0 0:04.69 kworker/0:1
1 root 20 0 38068 6032 3948 S 0.0 0.1 0:02.93 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.43 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 2:11.68 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root rt 0 0 0 0 S 0.0 0.0 0:00.24 migration/0
10 root rt 0 0 0 0 S 0.0 0.0 0:01.31 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:01.26 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:00.24 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:02.09 ksoftirqd/1
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
......
top
命令有非常多的选项,便于我们通过展示界面和内容进行定制, 在 top
命令的展示界面, 我们可以操作下述选项:
z
切换为颜色模式x
切换排序列的颜色s 10 Enter
设置更新频率Space
强制更新R
对排序列逆序P
以CPU使用率排序M
以内存使用率排序c
显示命令完整路径k {PID} Enter
关闭{PID}进程u {USER} Enter
仅显示指定用户进程h
显示帮助信息q
退出top
命令
top - 18:56:36 up 1 day, 2:36, 3 users, load average: 0.13, 0.14, 0.10
如果是1 core CPU, load average 超过 1 意味着CPU使用率达到100%
如果是2 core CPU, load average 超过 2 意味着CPU使用率达到100%
如果是N core CPU, load average 超过 N 意味着CPU使用率达到100%
一般情况下, 如果 load average
/CPU
核心数 超过 1 则意味着服务器超载了.
Tasks: 157 total, 1 running, 156 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.3 us, 0.3 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
这里显示总共有157个任务在执行, 1个正在运行, 其他156个均在休眠.
us
User CPU Time
运行用户态任务占用CPU时间片百分比sy
System CPU Time
运行内核态任务占用CPU时间片百分比ni
Nice CPU Time
用户态改变过优先级的进程占用CPU时间片百分比wa
iowait
等待输入输出的CPU时间片百分比hi
Hardware IRQ
硬件中断占用CPU时间片百分比si
Software Interrupts
软件中断占用CPU时间片百分比st
Steal Time
抢占到别的实例占用CPU时间片百分比
KiB Mem : 4045996 total, 3224488 free, 278292 used, 543216 buff/cache
KiB Swap: 998396 total, 998396 free, 0 used. 3522332 avail Mem
上述描述的系统的物理内存和交换分区的使用信息,KiB Mem
行显示总共4G内存, 空闲大概3G, 使用了大概300M左右, 缓存了500M左右.显示内存资源还是非常空闲KiB Swap
行显示交换分区总共1G左右的大小, 无任何内存交换行为,全部空闲中,服务器当前无任何大的IO负载.
物理内存计算方式一般是 total=free+used+buff/cache
, 交换分区也类似.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1632 rabbitmq 20 0 2203352 56164 5024 S 3.4 1.4 0:17.45 beam.smp
41 root 20 0 0 0 0 S 0.1 0.0 0:00.63 kworker/0:1
7 root 20 0 0 0 0 S 0.1 0.0 0:00.26 rcu_sched
从这里开始显示的系统的进程列表, 默认是根据CPU
使用率排序, 可以通过上述介绍的快捷键来切换, 每列详细信息如下:
PID
进程编号(Process Id)USER
进程运行用户名(User Name)PR
优先级(Priority)NI
负值表示高优先级,正值表示低优先级( Nice value)VIRT
进程使用的虚拟内存总量, 单位kb.VIRT=SWAP+RESRES
进程使用的、未被换出的物理内存大小, RES=CODE+DATASHR
共享内存大小S
进程状态。(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)%CPU
上次更新到现在的CPU时间占用百分比%MEM
进程使用的物理内存百分比TIME+
进程使用的CPU时间总计,单位1/100秒COMMAND
进程启动命令和参数
当然我们也可以通过命令参数来改变top
命令的行为
top -d 9
设置更新频率为9秒top -u {USER}
仅显示{USER}下的进程top -n 10
更新10次之后退出top
命令- `top -b -n 1 > top.txt 将top命令的内容输出到文本文件,