对于 Linux 系统管理员和开发者而言,面对数以千计的命令,掌握那些真正高频、高效且能解决特定痛点的核心命令至关重要。本文筛选出 100 条高级命令,其标准在于:进阶性(超越基础操作)、不可替代性(针对特定运维场景)、跨发行版兼容(适用于 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 条)
掌握这些命令是进行有效运维/DevOps和安全基线检查的基础。
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 .
掌握容器化技术是迈向云原生/IaaS架构的关键一步,能极大提升应用部署与管理的效率。
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 选项快速验证命令用法。运维的核心并非记忆命令本身,而是灵活运用这些工具解决实际问题——这些命令,正是经过验证的高效解决方案。