top
top命令用于实时的监控系统的处理器状态,以及其他硬件负载信息还有动态的进程信息等等
还可以按照排名,先后的显示某个进程CPU,内存的使用情况排名
# z 指令 打开,关闭颜色
[root@localhost ~]# top
top - 03:19:03 up 0 min, 2 users, load average: 0.21, 0.07, 0.03
Tasks: 117 total, 1 running, 116 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
KiB Mem : 2027904 total, 1543276 free, 321108 used, 163520 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1554956 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
298 root -51 0 0 0 0 S 0.3 0.0 0:00.01 irq/16-vmwgfx
966 root 20 0 305284 6372 5012 S 0.3 0.3 0:00.13 vmtoolsd
1 root 20 0 128436 7028 4156 S 0.0 0.3 0:02.45 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
1、系统的负载
top - 03:19:03 up 10 min, 2 users, load average: 0.21, 0.07, 0.03
Tasks: 117 total, 1 running, 116 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
KiB Mem : 2027904 total, 1543276 free, 321108 used, 163520 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1554956 avail Mem
03:19:03 up # 系统当前时间 date命令查看时间
10 min # 当前机器运行了多久:系统运行时间
2 users # 当前机器几个用户在使用
load average: 0.21, 0.07, 0.03 # 显示系统的平均负载情况,分别是1分钟,5分钟 15分钟显示的平均值(值越小,系统负载越低)
# 进程任务情况:分别是总进程数、运行中进程数、休眠进程数、停止、僵尸进程(不为0,需要进行排查)
Tasks: 117 total, 1 running, 116 sleeping, 0 stopped, 0 zombie
# CPU 的使用百分比情况
%Cpu(s): 0.0 wa, 0.0
us 用户占用的CPU百分比情况
sy 系统内核空间占用的CPU百分比
ni 用户进程空间占用的CPU百分比
id 空间的CPU百分比情况
wa 等待输入/输出的进程的占用CPU百分比
hi 硬中断占用的CPU百分比
si 软中断占用的CPU百分比
st 虚拟机占用CPU百分比。当有虚拟机时,虚拟CPU实际等待CPU的时间百分比
# 状态:物理内存相关,按m键进入可视化显示
KiB Mem : 2027904 total, 1543276 free, 321108 used, 163520 buff/cache
物理内存总大小 可用空间内存总量 已使用的内存量 缓存使用量情况
# 交换空间的状态
#KiB:计量单位,kilo binary bit的缩写,1KiB = 1024B
KiB Swap:
# 交换分析相关,按m键进入可视化显示
KiB Swap: 4194300 total, 4194300 free, 0 used. 1554956 avail Mem
交换空间
2、动态的进程信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
298 root -51 0 0 0 0 S 0.3 0.0 0:00.01 irq/16-vmwgfx
PID 进程id号,可以对它启停进程
USER 执行进程的用户是谁:所属用户的用户名
PR 进程的优先级高低,(值越小优先级越高)
NI nice值,越高表示优先级越高
VIRT 进程使用的虚拟内存总量 VIRT=swap + RES
RES 进程使用的物理内存大小
SHR 共享内存大小,单位是kb
S 表示进程的状态
%CPU 占用CPU的百分比
%MEM 总共占用内存的百分比
TIME 总共占用的CPU时间
COMMAND 时间+产生进程的命令
E:更改系统资源信息中的内存单位(KB、MB、GB、TB、PB)
e:更改进程信息中的内存单位(KB、MB、GB、TB、PB)
数字1:显示所有cpu情况(默认只展示一条)
x:高亮显示根据哪一列熟悉进行排序
</>:修改排序的字段(默认根据CPU)
n:输入每次要展示的进程信息行数
H:展示线程信息的开关
常用参数(持续补充)
-d:top结果的更新速度,单位为秒
-n:设定显示top结果的次数,随后自动退出命令
-b:批处理模式,不进入交互式模式
-p:指定需要展示的进程ID
-H:显示线程信息(配合-p参数使用,类似ps命令的-T与H参数
3、 实际应用
# top实际使用
输入数字1,表示查看Linux的逻辑CPU个数
# 交互式中top命令只会展示部分进程信息,如果想要查看所有的进程信息
top -b -n > out.log
# 查看进程的线程信息
top -H -p {PID}
# 按照内存使用情况排序
输入大写M指令,内存使用量 从大到小排序
# 显示进程命令的绝对路径
top -c
# 设置top进程刷新的时间
top -d 秒数(int)
# 设置top命令的刷新次数
top -n 3 # 刷新3次后结束
# 查看指定进程的信息,单独观察动态的资源信息
top -p pid
# 指定某一列高亮
输入z 打开颜色
输入x 某一列高亮
输入b 某一列加粗
4、如何查看僵尸进程
使用top命令可以查看僵尸进程数量
# 查看CPU的Processor数量,如果负载值超过核心处理器数量,一般认为是高负载。如:核心处理器数量为4,load average的值在4的左右浮动,就是高负
cat /proc/cpuinfo | grep processor | wc -l
# 如何排查僵尸(zombie)进程? (kill无效时,尝试kill父进程)
[root@centos ~]# ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
STAT PPID PID CMD
Z 1968 32070 [python] <defunct>
[root@centos ~]# kill -9 32070
# kill -9 和 kill -15 区别?
默认kill -15操作关闭, 也优先推荐。如果进程没有响应,再考虑使用kill -9强制关闭,但可能会文件损坏、不稳定风险,可能导致资源泄漏,如进行写入数据库关键操作时,强制终止可能会导致数据不一致或损坏
kill -15会首先尝试正常地终止其操作,释放资源,关闭文件等。许多程序会捕获这个信号,并优雅地关闭