Linux监控系统相关资源和运行状态命令整理
#前言:Linux系统自带了些实时查看监控系统运行状态的相关命令,接下来我们就来了解一下。
#首先我们先来了解一下什么是进程
#进程:是Linux用来表示正在运行的程序的一种抽象概念,Linux系统上所有运行的东西都可以称为进程
1.top命令:动态查看进程相关信息
[root@ctos1 ~]# top top - 10:26:38 up 9:07, 2 users, load average: 0.00, 0.02, 0.05 Tasks: 121 total, 2 running, 119 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 1865308 total, 125604 free, 520128 used, 1219576 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1078440 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 33188 root 20 0 158848 5588 4236 S 0.3 0.3 0:03.03 sshd 34324 root 20 0 162008 2204 1540 R 0.3 0.1 0:00.02 top 1 root 20 0 128076 6712 4124 S 0.0 0.4 0:19.29 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd
#提示:前五行是系统整体的统计信息
#详解相关命令意思
#第一行:任务队列信息,和uptime命令的执行结果相同
[root@ctos1 ~]# uptime 10:29:45 up 9:11, 2 users, load average: 0.00, 0.01, 0.05
#内容详解
10:29:45 #显示的是当前时间 up 9:11 #系统运行时间,格式为时:分 2 users #当前登录用户数 load average:0.00,0.01,0.5 #系统负载,三个数值分别为1分钟、5分钟、15分钟前到现在的平均值
#第二行:进程信息
Tasks: 121 total, 2 running, 119 sleeping, 0 stopped, 0 zombie
#内容详解
Tasks:121 total #进程总数 2 running #正在运行的进程数 119 sleeping #睡眠的进程数 0 stopped #停止的进程数 0 zombie #僵尸进程数
#第三行:cpu信息
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
#内容详解
0.0 us #系统用户进程使用CPU百分比 0.2 sy #内核空间占用CPU百分比 0.0 ni #用户进程空间内改变优先级的进程占用cpu百分比 99.7 id #空前的CPU百分比 0.0% wa # IO等待占用CPU的百分比 0.0% hi #硬中断(Hardware IRQ)占用CPU的百分比 0.2% si # 软中断(Software Interrupts)占用CPU的百分比
#第四五行:内存信息
KiB Mem : 1865308 total, 125604 free, 520128 used, 1219576 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1078440 avail Mem
#内容详解
Mem:1865308 total #物理内存总大小 125604 free #空闲的内存 520128 used #使用的物理内存总大小 1219576 buff/cache #用作内核缓存的内存量 swap:209714 total #交换分区总量 0 used #使用的交换分区大小 2097149 free #空闲的
#进程状态
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 33188 root 20 0 158848 5588 4236 S 0.3 0.3 0:03.03 sshd 34324 root 20 0 162008 2204 1540 R 0.3 0.1 0:00.02 top
#内容详解
PID #进程ID USER #进程所有者的用户名 PR #进程的调度的优先级 NI #NICE值,负值表示高优先级,正值表示低优先级 VIRT #进程使用的虚拟内存 RES #进程使用的虚拟内存总量,单位KB SHR #进程使用的共享内存,单位为kb S #进程状态,有五种状态,D:不可中断的睡眠状态,R:运行,S:睡眠, T:停止,Z:僵尸进程 %CPU #上次更新到现在的cpu时间占用百分比 %MEM #使用的物理内存百分比 TIME+ #使用的CPU时间总计,单位1/100秒 COMMAND #命令行/命令名
#top常用的快捷键
默认3s刷新一次
空格:立即刷新
q:退出
M:按内存大小排序
P:按CPU大小排序
N:按PID来排序
<>:翻页
2.ps查看系统进程状态
[root@ctos1 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 128076 6712 ? Ss 01:18 0:19 /usr/lib/systemd/systemd - root 2 0.0 0.0 0 0 ? S 01:18 0:00 [kthreadd]
#内容详解
USER:进程拥有者 PID :进程的ID号 %CPU :CPU占用百分比 %MEM :占用内存的百分比 VSZ: 占用虚拟内存的大小,单位KB RSS: 占用物理内存的大小,单位KB TTY: 当前进程执行的终端号 STAT: 进程的状态 START:进程开始时间 TIME :进程实际使用CPU时间 COMMAND:实际命令
#扩展:查看进程的其他常用命令
pstree #是以进程树的形式显示
pgrep #是以进程名字或属性来显示查找进程的PID
3.nice进程控制
Linux系统中每一个进程都有一个优先级PR(priotity),PR值越小,优先级越高,就会被优先执行,NICE值可以自己设定,NI的正负影响到PR值,可以通过设定NI来题升或降低进程的优先级
#例子:以nice值为-20运行top命令
[root@ctos1 ~]# nice -n -20 top
#修改进程的优先级
#例如:将PID为33192的进程的NICE值修改为10
[root@ctos1 ~]# renice 10 33192
4.kill终止进程
kill命令是发送一个信号给进程,默认是发送15(TERM)终止
#语法格式:kill PID
#例子:将PID为32813的进程终止
#可以先使用ps aux查看进程
[root@ctos1 ~]# kill 32813
#加-9:强制中断
[root@ctos1 ~]# kill -9 32813
#使用pkill结束http所有进程
#可以使用pidof查看http相关的进程PID号
[root@ctos1 ~]# pidof httpd 34505 34504 34503 34502 34501 34500
#结束httpd的所有进程
[root@ctos1 ~]# pkill -9 httpd
#收集系统运行状态信息
#先来安装一个后面命令需要使用的包
[root@ctos1 ~]# yum install sysstat -y
5.iostat:查看设备或分区的io相关统计
#主要用户监控系统设备的io负载情况
#语法和相关参数
iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -T ] -g group_name ] [ -p [ device [,...] | ALL ] ] [ device [...] | ALL ] [ interval [ count ] ]
#使用
[root@ctos1 ~]# iostat Linux 3.10.0-862.el7.x86_64 (ctos1) 03/14/2020 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.22 0.00 0.34 0.01 0.00 99.42 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 2.90 8.75 87.33 336333 3357085 scd0 0.00 0.03 0.00 1028 0 dm-0 3.03 7.99 87.28 307286 3355017 dm-1 0.00 0.06 0.00 2228 0
#输出命令解释
Device:设备名 tps:该设备每秒的传输次数 KB_read/s:每秒从设备读取的数据量 KB_wrtn/s:每秒向设备写入的数据量 KB_read:读取的总数据量 KB_wrtn:写入的总数据量
#使用-d参数:显示磁盘的使用状态
[root@ctos1 ~]# iostat -d 3 2 #每三秒刷新一次,总共报告两次 Linux 3.10.0-862.el7.x86_64 (ctos1) 03/14/2020 _x86_64_ (2 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 2.83 8.57 85.22 337789 3358511 scd0 0.00 0.03 0.00 1028 0 dm-0 2.96 7.83 85.17 308742 3356443 dm-1 0.00 0.06 0.00 2228 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1.00 0.00 1.99 0 6 scd0 0.00 0.00 0.00 0 0 dm-0 1.00 0.00 1.99 0 6 dm-1 0.00 0.00 0.00 0 0
#-x参数:显示和io相关的扩展数据
6.mpstat:查看处理器(CPU)相关的统计
#mpstat—-report processors related statistics(处理器相关的报告统计)
#mpstat,全称为Multiprocessor Statistics。是实时系统监控工具
#查看帮助:man mpstat
#命令执行格式
mpstat [ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ] [ -P { cpu [,...] |
ON | ALL } ] [ interval [ count ] ]
#使用
[root@ctos1 ~]# mpstat Linux 3.10.0-862.el7.x86_64 (ctos1) 03/14/2020 _x86_64_ (2 CPU) 11:14:13 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:14:13 PM all 0.23 0.00 0.32 0.01 0.00 0.02 0.00 0.00 0.00 99.42
#输出命令解释
CPU: 处理器编号,all表示统计信息计算为所有处理器之间的平均值 %usr: 用户下,CPU利用率百分比。 %nice: 具有nice优先级的用户下,CPU利用率百分比。 %sys: 系统级(内核)执行时发生的CPU利用率百分比 %Iowait: 显示系统具有未完成磁盘I/O请求时,CPU或CPU空闲的时间百分比。 %irq: 系统服务于硬中断的时间开销的百分比 %soft: 系统服务于软中断开销的时间开销百分比 %steal: 虚拟机管理程序服务另一个虚拟处理器时虚拟CPU或CPU无意中等待的时间百分比。 %guest: CPU运行虚拟处理器所花费的时间百分比。 %idle: CPU空闲的百分比
7.vmstat:查看虚拟内存相关的统计
#vmstat — report virtual memory statistics(报告虚拟内存的统计信息)
#语法:vmstat [options] [delay [count]]
#查看帮助:man vmstat
#使用
[root@ctos1 ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 509652 116 1212016 0 0 4 43 69 72 0 0 99 0 0
#输出命令解释
r:等待执行的任务数 b:表示阻塞的进程 swap:虚拟内存已使用的大小 free:空闲的物理内存的大小 buff:已用的缓冲大小 cache:已用的缓存大小 si:每秒从磁盘读入虚拟内存的大小 so:每秒虚拟内存写入磁盘的大小 bi:块设备每秒接收的块数量 bo:块设备每秒发送的块数量 in:每秒CPU的中断次数 cs:每秒上下文切换次数 us:用户CPU时间 sy:系统CPU时间 id:空闲CPU时间 wa:等待io时间
8.其他相关查看信息
#查看CPU信息
lscpu 或cat /proc/cpuinfo
#查看内存信息
[root@ctos1 ~]# cat /proc/meminfo
#查看虚拟内存的使用触发值
[root@ctos1 ~]# cat /proc/sys/vm/swappiness 30
#查看系统上使用的模块
[root@ctos1 ~]# cat /proc/modules
#查看系统分区信息
[root@ctos1 ~]# cat /proc/partitions major minor #blocks name 8 0 20971520 sda 8 1 1048576 sda1 8 2 19921920 sda2 11 0 9177088 sr0 253 0 17821696 dm-0 253 1 2097152 dm-1
#网络流量监控工具
iptraf
iftop