Linux 命令数以千计,但日常运维中 99% 的问题可通过 100 条核心高级命令解决。本文筛选标准:进阶性(非 ls/cd 等基础命令)、不可替代性(解决特定场景痛点)、跨发行版兼容(CentOS/Ubuntu 通用)、实战高频性(源自十年运维经验总结)。

一、文件系统与存储管理(20 条)

1. 高效文件操作

带进度条的递归复制(比cp更可靠)

rsync -ah --progress /data/backup/ [email protected]:/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 [email protected].\*" >> /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" [email protected]; 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快速验证用法。运维的核心不是记命令,而是用工具解决问题 —— 这些命令,正是解决问题的最优解。

发表评论