Linux 命令数以千计,但日常运维中 99% 的问题可通过 100 条核心高级命令解决。本文筛选标准:进阶性(非 ls/cd 等基础命令)、不可替代性(解决特定场景痛点)、跨发行版兼容(CentOS/Ubuntu 通用)、实战高频性(源自十年运维经验总结)。
-
高效文件操作
\# 带进度条的递归复制(比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  -
存储管理进阶
\# 查看磁盘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 -
归档与压缩技巧
\# 排除特定目录压缩(备份时常用) 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 
-
连接状态分析
\# 查看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  -
故障排查工具
\# 动态路由追踪(结合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扫描,不探测端口 -
网络配置进阶
\# 临时修改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
-
资源监控工具
\# 按内存使用率排序进程(找出内存黑洞) 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 -
性能分析命令
\# 分析进程文件句柄(解决“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  -
系统信息查询
\# 查看系统版本(通杀所有发行版) 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
-
账户安全检查
\# 查看所有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  -
登录与访问控制
\# 排查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 -
文件与权限审计
\# 查找全局可写且无粘滞位的目录(安全隐患) 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文件
-
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 . -
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
-
三剑客高级用法
\# 提取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 -
日志管理技巧
\# 查看日志中最频繁的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
-
备份策略实现
\# 增量备份(仅备份变更文件) 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  -
自动化与脚本工具
\# 查看定时任务(所有用户) 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快速验证用法。运维的核心不是记命令,而是用工具解决问题 —— 这些命令,正是解决问题的最优解。
