🐧 Linux 运维命令
适用场景:系统管理、故障排查、性能调优、自动化运维 核心原则:生产环境安全第一,操作前确认,高危命令需谨慎。
📂 第一章:文件管理与搜索 (核心基础)
1.1 目录与文件操作增强版 (ls, cd, pwd, ln)
ls(List)ls -lhS --color=auto:[推荐] 按文件大小排序(大文件在顶),显示单位(KB/MB)。ls -lart:按修改时间倒序(最新的在最下),快速定位刚刚被改动的文件。ls -i:查看 inode 号(解决文件名乱码无法删除的“钉子户”文件)。
ln(Link) —— 链接管理ln -s /path/to/source /path/to/link:[常用] 创建软链接(快捷方式)。注意:源路径建议写绝对路径,防止失效。ln source target:创建硬链接(同一个 inode,防误删)。
1.2 文件增删改 (mkdir, rm, cp, mv)
rm(Remove) —— ⚠️ 高危区- [黄金法则]:使用通配符前,先用
ls确认!例如:ls *.log && rm -f *.log。 rm -rf /path:强制递归删除。- [避坑]:严禁在脚本中使用
rm -rf /${VAR}/*,如果变量未定义,就是删根!
- [黄金法则]:使用通配符前,先用
cp(Copy) &mv(Move)cp -a source dest:[备份首选] 完整保留权限、时间戳、所属主(等同于-dR --preserve=all)。mv -b source dest:如果目标存在,先自动备份目标文件(生成file~)。
1.3 文件查找与内容查看 (find, tail, less)
find(搜索神器)find /var/log -name "*.log" -mtime +7:查找/var/log下 7 天前的 log 文件。find / -size +100M:[磁盘清理] 全盘查找大于 100M 的大文件。find . -name "*.tmp" -exec rm -f {} \;:查找并直接删除(慎用)。find / -perm -u=s -type f:查找具有 SUID 权限的危险文件(安全审计)。
内容查看
tail -f app.log:[运维高频] 实时监控日志末尾输出。tail -100f app.log:查看最后 100 行并保持实时刷新。less file:翻页查看大文件(比cat更有利于内存,按G到底部,/keyword搜索)。
📊 第二章:系统资源与性能深度监控
2.1 CPU 与 负载 (top, uptime, mpstat)
top(实时监控)top -Hp <PID>:[排查神器] 查看指定进程内的线程资源占用(定位 Java/Go 某线程高负载)。- 快捷键:
1(展开多核),c(显示完整命令路径),k(杀进程). - [Load Average 解读]:右上角的三个数字分别代表 1、5、15 分钟的平均负载。如果数值 > CPU 核数,说明系统过载。
vmstat(虚拟内存与系统瓶颈)vmstat 1:每秒刷新。- [关键指标]:
r(Run):运行队列,> CPU 核数 = CPU 瓶颈。b(Block):等待 IO 的进程数,高说明磁盘 IO 堵塞。si/so:非 0 说明物理内存不够,正在用 Swap。
2.2 内存分析 (free, smem)
freefree -h:看内存总量。- [核心认知]:Linux 内存管理策略是“吃光用尽”。
buff/cache占用高是正常的(用于加速读写),重点看available(应用程序真正可用的)。
2.3 磁盘 IO (iostat, iotop, du, df)
iostatiostat -xzk 1:详细 IO 统计。- [判据]:
%util> 80% (磁盘忙碌);await> 10ms (响应慢);svctm(实际处理时间)。
du/dfdf -Th:查看分区类型(xfs/ext4)和使用率。df -i:查看 inode 使用率(inode 耗尽会导致有空间但无法写入)。du -h --max-depth=1 /var | sort -hr | head -10:[空间清理] 快速找出/var下最大的 10 个目录。
🌐 第三章:网络与连接 (新增增强章节)
3.1 网络连接与流量 (ss, iftop, nload)
ss(Socket Statistics - 推荐替代 netstat)ss -tulnp:显示所有监听端口及对应的进程名(需 root)。ss -an state established:查看所有已建立的连接。ss -s:快速统计连接总数(SYN, ESTABLISHED 等)。
iftopiftop -P:实时流量监控,显示谁在跟谁通信,以及占用的带宽。
3.2 网络连通性测试 (curl, nc, ping)
curl(接口测试)curl -I www.google.com:只看 HTTP 响应头(检查 200 OK)。curl -v http://127.0.0.1:8080:打印详细通信过程(Debug 专用)。curl -o /dev/null -s -w "%{time_total}\n" http://baidu.com:测试网站响应耗时。
nc(Netcat - 网络瑞士军刀)nc -z -v -w 2 192.168.1.1 3306:[探测端口] 探测目标 IP 的 3306 端口是否通(替代 telnet)。
ip(IP配置)ip addr:查看 IP 地址(替代 ifconfig)。ip route:查看路由表(排查网关问题)。
📝 第四章:文本处理“三剑客” (运维必修)
4.1 grep (过滤)
grep -r "Error" /var/log/:递归搜索目录下所有文件。grep -E "Failed|Error" file:正则匹配多个关键词。grep -v "^#" config.conf | grep -v "^$":[配置清洗] 去除配置文件中的注释行和空行。grep -C 5 "Exception" app.log:查看报错前后 5 行上下文。
4.2 awk (取列与统计)
awk '{print $1, $NF}' file:打印第 1 列和最后一列。- [实战] 统计 Nginx 日志 Top 10 访问 IP:
1awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10 - [实战] 统计 TCP 连接状态:
1ss -an | awk '{print $1}' | sort | uniq -c
4.3 sed (替换与修改)
sed 's/old/new/g' file:在屏幕输出替换结果。sed -i.bak 's/8080/9090/g' config.xml:[安全] 直接修改文件,并自动备份为.bak。sed -n '/10:00/,/11:00/p' access.log:按时间范围截取日志。
💻 第五章:进程管理
ps&pgrepps aux --sort=-%cpu | head:列出最耗 CPU 的进程。pgrep -a java:查看所有 Java 进程的完整命令。
killkill -15 <PID>:[推荐] 优雅退出(TERM 信号)。kill -9 <PID>:强制杀死(KILL 信号,可能丢数据)。pkill -u user1:踢掉某个用户的所有进程。
🛠️ 第六章:系统服务与日志 (Systemd)
systemctlsystemctl status/start/stop/restart nginxsystemctl enable nginx:开机自启。systemctl list-units --type=service --state=failed:[故障概览] 列出所有挂掉的服务。
journalctljournalctl -u nginx -f:实时看某服务日志。journalctl -xe:服务启动失败时,看详细报错堆栈。journalctl --disk-usage/journalctl --vacuum-time=7d:查看并清理 7 天前的系统日志。
📦 第七章:压缩、传输与软件包
7.1 压缩 (tar)
tar -czf backup.tar.gz /data:打包压缩。tar -xzf backup.tar.gz -C /opt:解压到指定目录。
7.2 传输 (rsync, scp)
scp -r /local/dir user@host:/remote/dir:简单的远程拷贝。rsync -avzP /source/ user@host:/dest/:[推荐] 增量同步,显示进度条 (P)。
7.3 软件包管理 (基础)
- CentOS/RHEL:
yum update,yum install tree,yum clean all. - Ubuntu/Debian:
apt update,apt install tree.
🔐 第八章:用户权限与安全加固
chmod/chownchmod 755 file(脚本常用) /chmod 600 id_rsa(私钥文件必须权限)。chown -R user:group /data。
chattr(文件锁)chattr +i /etc/passwd:[防黑] 锁定关键文件,root 也无法修改/删除。lsattr file:查看锁定状态。
sudovisudo:编辑 sudo 权限配置(语法检查防错)。
⚙️ 第九章:内核与硬件信息 (专家级)
uname -a/cat /etc/os-release:查看系统版本内核。lscpu:查看 CPU 架构核数。lsblk:查看磁盘分区挂载。dmesg | tail -20:[硬件故障] 查看内核环形缓冲区(OOM Killer、硬件报错都在这)。sysctl -p:重新加载内核参数(如 TCP 调优后)。
🧩 第十章:生产环境故障排查实战案例 (FAQ)
案例 1:CPU 100% 但找不到高负载进程
现象:top CPU 高,但进程列表里没有特别高的。
原因:短命进程(频繁启动退出)或 内核态占用。
排查:
- 看
top表头的sy(System) 和wa(IO Wait)。 - 如果是
sy高,可能是驱动或内核 bug。 - 如果是
wa高,使用iotop抓磁盘读写进程。
案例 2:磁盘满了但 du 统计不到大文件
现象:df -h 显示 100%,du -sh 却只有 50%。
原因:文件被 rm 删除,但进程仍持有句柄(文件未真正释放)。
排查:
| |
解决:重启持有句柄的进程(如 nginx/java),或 echo > /proc/<PID>/fd/<FD> 置空。
案例 3:服务器变慢,网络卡顿
排查三板斧:
ping <网关>:看内网延迟丢包。curl -v <目标>:看 TCP 建连耗时。dmesg | grep -i "error":看网卡是否有物理报错。
📜 第十一章:自动化巡检脚本 (最终版)
保存为 health_check.sh:
| |