上期我们围绕Linux文件管理场景,分享了系列实用操作命令。本期将涵盖CPU/磁盘使用率与空闲率查询、特定端口关联进程定位、端口连接数统计、内存高占用进程排查、磁盘I/O性能监控、网络流量实时观测等核心场景,所有命令均为可直接操作,帮你快速监控系统状态。
针对 “提取 CPU 使用率、空闲率” 的核心需求,这组命令能直接输出格式化的直观数据,无需在 top 交互界面手动解读:
[root@mugen ~]# top -bn1 | grep "Cpu(s)" | awk '{printf "CPU使用率:%.1f%% 空闲率:%.1f%%\n", 100-$8, $8}'
例如:查看当前系统CPU的使用率和空闲率
## 命令解释top -bn1 :非交互模式输出一次系统资源占用情况(避免进入top交互界面,适合脚本或快速查看);grep "Cpu(s)" :筛选出CPU相关的统计行;awk '{print ...}' :提取CPU使用率(第2列)和空闲率(第8列),以清晰格式输出。## 补充在确认 CPU 负载过高后,需进一步锁定高耗进程,这组命令可直接输出核心信息,快速定位 “元凶”:ps aux --sort=-%cpu | head -n 6 | awk '{print "进程ID:" $2 " 进程名:" $11 " CPU占用率:" $3 "%"}'
针对 “过滤文件系统 + 输出分区核心信息” 的需求,这组命令能直接输出清晰的排查结果:
[root@mugen ~]# df -h | grep -v "tmpfs" | awk 'NR>1 {print "分区:" $1 " 使用率:" $5 " 剩余空间:" $4}'
例如:查看当前系统分区的使用率和剩余空间
## 命令解释df -h :以人类可读格式显示所有磁盘分区的使用情况;grep -v "tmpfs" :排除临时文件系统(tmpfs为内存虚拟分区,无需关注);awk '{print ...}' :提取分区名称(第1列)、使用率(第5列)、剩余空间(第4列),简化输出信息。## 补充补充:若需监控分区使用率,可结合 watch 命令实时刷新: watch -n 5 'df -h | grep -v "tmpfs"' (每5秒刷新一次)。
针对“筛选特定端口+定位进程ID + 进程名” 的核心需求,这组命令能直接输出清晰的关键信息,无需手动分析原始输出:
[root@mugen ~]# lsof -i:22 2>/dev/null | grep -v "COMMAND" | awk '{print "进程ID:" $2 " 进程名:" $1}'
## 命令解释lsof -i:22 :列出占用22端口的所有进程信息(可替换你的端口);grep -v "COMMAND" :排除列标题行(仅保留进程数据行);awk '{print ...}' :提取进程ID(第2列)和进程名(第1列),快速定位问题进程。## 补充补充:若系统未安装lsof,可使用备选命令: netstat -tulnp | grep :22 | awk '{print "进程ID:" $7 " 进程名:" $7}' | cut -d '/' -f 1,2
针对“统计端口已建立连接数” 的核心需求,这组命令组合能直接输出具体数值,无需手动计数:
[root@mugen ~]# ss -tn state established | grep ":22" | wc -l
## 命令解释ss -tn state established:显示所有已建立的TCP连接(以数字形式,不解析域名);grep ":22" :筛选出与22端口相关的连接;wc -l :统计已建立连接的数量。## 补充若需查看连接到22端口的所有端IP,可执行: netstat -an | grep ":22" | grep "ESTABLISHED" | awk '{print $5}' | cut -d ':' -f 1 | sort | uniq -c
针对“定位内存占用最高的前3 个进程+ 输出核心信息”的需求,这组命令能直接输出清晰的排查结果:
[root@mugen ~]# ps aux --sort=-%mem | tail -n +2 | grep -v grep | head -n 3 | awk '{print "进程ID:" $2 " 进程名:" $11 " 内存占用率:" $4 "%"}'
例如:查看当前内存占用最高的三个进程
## 命令解释--sort=-%mem :按内存占用率从高到低排序;grep -v grep :排除grep自身进程(避免干扰结果);tail -n +2 :跳过第1行标题;head -n 3 :取前3行(含列标题,实际获取前3个高占用进程);
针对“实时查看当前系统中磁盘读写最频繁的前3个进程,识别I/O瓶颈”的需求,这组命令能直接输出清晰的排查结果:
[root@mugen ~]# pidstat -d 1 1 2>/dev/null | tail -n +4 | head -n 3 | awk '{printf "进程ID:%s 进程名:%s 读:%sKB/s 写:%sKB/s\n", $4, $8, $5, $6}'
## 命令解释pidstat -d 1 1:执行磁盘I/O统计,采样间隔1秒,共采样1次。2>/dev/null:将标准错误输出重定向到/dev/null,避免显示错误信息。awk '$3 ~ /^[0-9]+$/ ...':只处理第三列由数字组成的行(即数据行),然后按照格式打印进程ID、进程名、读速度和写速度。head -n 3:限制输出最多3行。## 注意要使用pidstat命令需安装sysstat包,按照sysstat执行yum install sysstat -y
针对“查看指定网卡的实时流量,排查网络瓶颈或异常流量”的需求,这组命令能直接输出清晰的排查结果:
[root@mugen ~]# sar -n DEV 1 1 | grep -E "(ens160)" | tail -n 1 | awk '{printf "网卡:%s 接收:%.2fMB/s 发送:%.2fMB/s\n", $2, $5/1024, $6/1024}'
列如:查看网卡的实时流量
## 命令解释sar -n DEV 1 1:使用sar工具监控网络设备(-n DEV),采样间隔1秒,总共采样1次(获取当前瞬时流量);grep -E "(ens160)":使用扩展正则表达式匹配ens160网卡(常见网卡名,可按需调整);tail -n 1:取最后一行(sar输出包含多行统计信息,最后一行是最终统计值);awk '{...}':格式化输出,其中:$5/1024:将接收速率从KB/s转换为MB/s(sar默认输出单位为KB/s);$6/1024:将发送速率从KB/s转换为MB/s;%.2f:保留两位小数,提高可读性。
针对“查看系统负载和进程总数,判断系统压力来源”的需求,这组命令能直接输出清晰的排查结果:
[root@mugen ~]# uptime | awk -F'load average:' '{print $2}' | awk '{printf "1分钟负载:%s 5分钟负载:%s\n", $1, $2}'; ps aux | wc -l | awk '{print "总进程数:"$1}'
## 命令解释uptime:显示系统运行时间、登录用户数和系统负载;awk -F'load average:' '{print $2}':以"load average:"为分隔符,提取负载平均值部分(格式如:"0.05, 0.03, 0.01");awk '{printf "...", $1, $2}':格式化输出前两个负载值($1=1分钟负载,$2=5分钟负载);
长按下图(👇👇)二维码,一键关注“武汉木亘信息技术有限公司”