Linux 命令数以千计,但日常运维中 99% 的问题可通过 100 条核心高级命令解决。本文筛选标准:进阶性(非 ls/cd 等基础命令)、不可替代性(解决特定场景痛点)、跨发行版兼容(CentOS/Ubuntu 通用)、实战高频性(源自十年运维经验总结)。
一、文件系统与存储管理(20 条)
1. 高效文件操作
\# 带进度条的递归复制(比cp更可靠)
rsync -ah --progress /data/backup/ user@192.168.1.100:/remote/backup/ 
\# 查找7天前大于1G的日志文件并压缩
find /var/log -mtime +7 -size +1G -name "\*.log" -exec gzip {} \\; 
\# 批量修改文件权限(保留原有权限基础上加执行权)
chmod -R a+x --preserve-root /usr/local/bin/
\# 查找SUID权限文件(安全审计必备)
find / -perm -4000 -type f -exec ls -la {} \\; 2>/dev/null 
2. 存储管理进阶
\# 查看磁盘I/O详情(定位慢盘)
iostat -x 5 3 # 每5秒采样,共3次
\# LVM扩容(实战扩容流程)
lvresize -L +50G /dev/mapper/centos-root && xfs\_growfs / # XFS文件系统
\# 检测磁盘坏道(非破坏性检测)
badblocks -v /dev/sda1 > bad\_sectors.txt
\# 挂载ISO文件(无需刻录)
mount -o loop /tmp/ubuntu.iso /mnt/iso/
\# 查看文件系统inode使用情况(解决“磁盘未满却无法创建文件”问题)
df -i
3. 归档与压缩技巧
\# 排除特定目录压缩(备份时常用)
tar -czvf backup.tar.gz --exclude=node\_modules /home/project/
\# 分卷压缩大文件(适配网盘上传)
split -b 100M large\_file.tar.gz "large\_file\_part\_"
\# 解压分卷文件
cat large\_file\_part\_\* | tar -xzvf -
\# 计算文件哈希(验证传输完整性)
sha256sum ubuntu.iso > ubuntu.sha256 && sha256sum -c ubuntu.sha256 
二、网络诊断与配置(20 条)
1. 连接状态分析
\# 查看TCP连接状态统计(排查TIME-WAIT堆积)
ss -tan | awk '{print \$1}' | sort | uniq -c 
\# 查找占用80端口的进程(比netstat更高效)
ss -tulnp | grep :80 
\# 实时监控网络流量(按端口分类)
iftop -P -i eth0
\# 查看IP路由表(含网关优先级)
ip route show table all
\# 刷新ARP缓存(解决MAC地址冲突)
ip neigh flush dev eth0 
2. 故障排查工具
\# 动态路由追踪(结合ping与traceroute优势)
mtr -w github.com 
\# 捕获HTTP请求(分析接口异常)
tcpdump -i eth0 -s 0 -A 'tcp port 80 and (((tcp\[12:1] & 0xf0) >> 2) = 0x47455420)' 
\# 测试端口连通性(支持UDP)
nc -zv -u 192.168.1.1 53 # 测试DNS端口
\# DNS深度解析(追踪解析链路)
dig +trace www.baidu.com 
\# 扫描局域网存活主机
nmap -sn 192.168.1.0/24 # 仅ping扫描,不探测端口
3. 网络配置进阶
\# 临时修改MTU(解决jumbo帧问题)
ip link set eth0 mtu 9000 
\# 配置虚拟IP(高可用场景)
ip addr add 192.168.1.100/24 dev eth0 label eth0:0
\# 查看网络接口统计(定位丢包)
ip -s link show eth0 
\# 关闭TCP timestamp(优化高并发连接)
sysctl -w net.ipv4.tcp\_timestamps=0
\# 配置DNS服务器(临时生效)
echo "nameserver 8.8.8.8" > /etc/resolv.conf
三、系统监控与性能调优(15 条)
1. 资源监控工具
\# 按内存使用率排序进程(找出内存黑洞)
ps aux --sort=-%mem | head -10
\# 实时监控系统资源(含磁盘I/O)
htop -s PERCENT\_MEM # 按内存排序
\# 查看CPU核心详情(含型号与频率)
lscpu | grep -E "Model name|CPU MHz|CPU cores"
\# 监控内存页交换(判断内存是否不足)
vmstat 1 5 # 每1秒输出,共5次
\# 查看系统负载趋势(近1/5/15分钟)
uptime
2. 性能分析命令
\# 分析进程文件句柄(解决“too many open files”)
lsof -p 1234 | wc -l # 1234为进程PID
\# 查看系统调用(诊断程序异常)
strace -p 1234 -c # 统计调用频率
\# 监控磁盘IOPS(评估存储性能)
iostat -d 1 5
\# 分析网络吞吐量(按协议分类)
nload -m
\# 查看内核日志(排查硬件故障)
dmesg | grep -i error 
3. 系统信息查询
\# 查看系统版本(通杀所有发行版)
cat /etc/\*release 
\# 查看内核参数(含当前值)
sysctl -a | grep net.ipv4.tcp\_max\_tw\_buckets
\# 查看硬件信息(替代lshw)
dmidecode -t memory # 仅查看内存信息
\# 查看系统启动时间与运行时长
systemd-analyze
\# 查看已安装软件包(含版本)
dpkg --list | grep nginx # Debian/Ubuntu
rpm -qa | grep nginx # CentOS/RHEL
四、安全审计与权限管理(15 条)
1. 账户安全检查
\# 查看所有UID为0的账户(排查隐藏root)
awk -F: '(\$3 == 0) {print}' /etc/passwd 
\# 查找空密码账户
awk -F: '(\$2 == "") {print}' /etc/shadow 
\# 查看sudo权限用户
grep -v "^#" /etc/sudoers | grep "ALL=(ALL)" 
\# 锁定账户(禁止登录但保留文件)
passwd -l testuser
\# 查看最近登录记录
last -n 20 
2. 登录与访问控制
\# 排查SSH暴力破解(统计失败IP)
grep "Failed password" /var/log/auth.log | awk '{print \$11}' | sort | uniq -c | sort -nr 
\# 查看当前登录用户详情
w # 含IP与操作命令
\# 限制用户SSH登录(仅允许指定IP)
echo "AllowUsers testuser@192.168.1.\*" >> /etc/ssh/sshd\_config
\# 查看SSH连接日志
journalctl -u sshd -f # 实时追踪
\# 禁用root直接SSH登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd\_config
3. 文件与权限审计
\# 查找全局可写且无粘滞位的目录(安全隐患)
find / -xdev -type d \\( -perm -0002 -a ! -perm -1000 \\) -print 
\# 检查重要文件权限(防止越权访问)
ls -la /etc/passwd /etc/shadow /etc/sudoers 
\# 监控文件变更(临时追踪配置文件)
watch -n 1 "md5sum /etc/nginx/nginx.conf"
\# 恢复文件权限(基于rpm数据库)
rpm -Va nginx # CentOS/RHEL 
\# 查找最近修改的敏感文件
find /etc -mtime -1 -type f # 1天内修改的/etc文件
五、容器与虚拟化管理(10 条)
1. Docker 核心命令
\# 查看容器资源占用(按CPU排序)
docker stats --no-stream --format "{{.Name}} {{.CPUPerc}} {{.MemUsage}}" | sort -k2 -r
\# 清理悬空镜像与容器(释放磁盘)
docker system prune -a -f
\# 查看容器详细配置(含网络与挂载)
docker inspect nginx-container
\# 进入容器(带终端与环境变量)
docker exec -it --env "TERM=xterm" nginx-container /bin/bash
\# 备份容器数据卷
docker run --rm -v nginx-data:/source -v \$(pwd):/backup alpine tar -czvf /backup/nginx-backup.tar.gz -C /source .
2. K8s 基础运维
\# 查看Pod资源使用(需metrics-server)
kubectl top pod -n default
\# 查看Pod事件(排查启动失败)
kubectl describe pod nginx-pod
\# 进入Pod容器
kubectl exec -it nginx-pod -c nginx-container -- /bin/sh
\# 复制文件到Pod
kubectl cp local-file.txt nginx-pod:/tmp/
\# 查看节点资源状态
kubectl describe node node-1
六、文本处理与日志分析(10 条)
1. 三剑客高级用法
\# 提取Nginx日志中的404请求(含URL与IP)
awk '\$9 == 404 {print \$1, \$7}' /var/log/nginx/access.log 
\# 批量替换配置文件内容(跨目录)
sed -i 's/old\_domain.com/new\_domain.com/g' \`grep -rl "old\_domain.com" /etc/\` 
\# 高亮日志中的ERROR(实时追踪)
tail -f /var/log/syslog | grep --color=auto -i "error" 
\# 统计不同状态码的请求数
awk '{count\[\$9]++} END {for(code in count) print code, count\[code]}' /var/log/nginx/access.log
\# 提取JSON日志中的特定字段
jq '.timestamp, .message' /var/log/app/json.log
2. 日志管理技巧
\# 查看日志中最频繁的IP(排查攻击)
grep -oE "\b(\[0-9]{1,3}\\.){3}\[0-9]{1,3}\b" /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
\# 按时间范围过滤日志(ISO格式)
sed -n '/2025-12-01T00:00:00/,/2025-12-01T06:00:00/p' /var/log/syslog
\# 压缩旧日志(保留30天)
find /var/log -name "\*.log" -mtime +30 -exec gzip {} \\;
\# 合并分割日志(按时间排序)
ls -tr access.log.\* | xargs cat > access.log.full
七、备份恢复与自动化(10 条)
1. 备份策略实现
\# 增量备份(仅备份变更文件)
rsync -av --link-dest=/backup/last /data /backup/current # 硬链接增量
\# 数据库备份(自动压缩)
mysqldump -u root -p'password' --all-databases | gzip > /backup/mysql\_\$(date +%Y%m%d).sql.gz
\# 备份校验(防止备份损坏)
md5sum /backup/backup.tar.gz > /backup/backup.tar.gz.md5 && md5sum -c /backup/backup.tar.gz.md5
\# 定时备份(保留最近7天)
echo "0 1 \* \* \* root /usr/local/bin/backup.sh && find /backup -name '\*.tar.gz' -mtime +7 -delete" >> /etc/crontab 
2. 自动化与脚本工具
\# 查看定时任务(所有用户)
for user in \$(cut -f1 -d: /etc/passwd); do echo "User: \$user"; crontab -u \$user -l 2>/dev/null; done 
\# 监控脚本(内存超80%报警)
while true; do if \[ \$(free | awk '/Mem/{print \$3/\$2\*100}' | cut -d. -f1) -gt 80 ]; then echo "Memory alert" | mail -s "Alert" admin@example.com; fi; sleep 60; done
\# 批量执行命令(多服务器)
for host in \$(cat hosts.txt); do ssh \$host "uptime"; done
\# 查看脚本执行日志(调试crontab)
grep CRON /var/log/syslog
\# 生成随机密码(自动化脚本用)
openssl rand -hex 16
100 条命令只是工具,真正 “能用到退休” 的是组合思维:比如用ss + awk + sort定位连接瓶颈,用find + xargs + gzip清理日志。建议养成查man手册的习惯(如man ss看参数细节),结合--help快速验证用法。运维的核心不是记命令,而是用工具解决问题 —— 这些命令,正是解决问题的最优解。
转自:运维网工
想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

17认证网








