1. Linux系统常用命令深度解析(四)
作为Linux系统管理员十五年的老鸟,今天继续分享那些真正高频使用的命令组合。不同于网上随处可见的"命令大全",这里只聚焦实际运维中最实用的技巧,每个命令都经过生产环境验证。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录管理进阶
2.1 高效文件查找与处理
find命令的深度用法远不止基础搜索。这个生产环境最常用的命令组合可以快速定位并处理特定文件:
bash复制# 查找7天前修改的.log文件并删除(先echo确认)
find /var/log -name "*.log" -mtime +7 -exec echo rm -f {} \;
# 按大小查找并压缩(适用于日志轮转)
find /opt/app/logs -size +100M -exec gzip {} \;
关键提示:-exec参数会为每个文件启动新进程,处理大量文件时改用xargs更高效:
find /path -type f -print0 | xargs -0 command
2.2 目录差异比对技巧
当需要同步两个目录时,先用diff -r对比差异:
bash复制diff -rq dir1/ dir2/ | grep -v "Only in"
配合rsync实现智能同步(保留权限且只传输差异部分):
bash复制rsync -avz --delete source/ user@remote:dest/
3. 网络与系统监控实战
3.1 实时网络连接分析
ss命令替代netstat的新一代工具,显示TCP连接状态分布:
bash复制ss -ant | awk 'NR>1 {print $1}' | sort | uniq -c
监控异常连接(ESTABLISHED状态超过100的IP):
bash复制ss -ntp | awk '/ESTAB/{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
3.2 进程资源占用定位
top的替代方案htop需要额外安装,但提供更直观的视图。常规排查流程:
- 先用top按CPU排序(Shift+P)
- 按内存排序(Shift+M)找内存泄漏
- 查看IO等待(wa指标超过5%需警惕)
更精细的进程树查看:
bash复制pstree -p -a -l -c -A | less
4. 文本处理三剑客进阶
4.1 grep的上下文捕获技巧
查看日志时显示匹配行前后内容(-A后 -B前 -C前后):
bash复制grep -n -A3 -B2 "ERROR" application.log
多条件复杂匹配(-E启用扩展正则):
bash复制grep -E "FATAL|CRITICAL" /var/log/syslog
4.2 sed的原地编辑陷阱
经典的文件内容替换:
bash复制sed -i.bak 's/old/new/g' file.txt
严重警告:-i参数直接修改原文件,务必先测试或创建备份(如示例中的.bak后缀)
4.3 awk的字段处理魔法
统计Nginx日志各状态码出现次数:
bash复制awk '{print $9}' access.log | sort | uniq -c
提取特定时间段的日志(配合date命令):
bash复制awk -v start="$(date -d '1 hour ago' +[%d/%b/%Y:%H:%M:%S)" -v end="$(date +[%d/%b/%Y:%H:%M:%S)" '$4 >= start && $4 <= end' access.log
5. 系统调试与性能分析
5.1 内存泄漏排查流程
- 先用free -h查看整体内存
- 通过top确认进程级占用
- 使用pmap分析具体内存分布:
bash复制pmap -x $(pgrep java) | tail -n +2 | sort -nk3 | tail
5.2 磁盘IO瓶颈诊断
iostat查看设备级负载(2秒刷新,共5次):
bash复制iostat -x 2 5
关键指标:
- %util > 70% 表示磁盘饱和
- await > 10ms 可能存在性能问题
5.3 系统调用追踪
strace跟踪进程系统调用(适合排查卡死问题):
bash复制strace -ff -o trace.log -T -tt -p $(pgrep nginx)
6. 安全相关关键命令
6.1 用户权限审计
检查具有sudo权限的用户:
bash复制grep -Po '^sudo.+:\K.*$' /etc/group
查看所有用户的登录shell:
bash复制getent passwd | awk -F: '{print $1,$7}' | column -t
6.2 SSH安全加固
检查异常登录尝试:
bash复制grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
密钥登录配置要点:
bash复制chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
7. 实用脚本片段集锦
7.1 自动备份脚本框架
bash复制#!/bin/bash
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
tar -zcf "$BACKUP_DIR/app_$(hostname).tar.gz" /opt/app/
find /backup/ -type d -mtime +30 | xargs rm -rf
7.2 服务监控告警模板
bash复制#!/bin/bash
SERVICE="nginx"
if ! systemctl is-active --quiet $SERVICE; then
echo "$(date) - $SERVICE down" >> /var/log/service_monitor.log
systemctl restart $SERVICE
fi
8. 终端效率提升技巧
8.1 命令历史优化
~/.bashrc中添加:
bash复制export HISTTIMEFORMAT="%F %T "
export HISTSIZE=10000
export HISTFILESIZE=20000
shopt -s histappend
8.2 快速目录跳转
安装autojump后:
bash复制j project # 跳转到包含project的常用目录
9. 常见故障处理手册
9.1 磁盘空间爆满应急
三步快速定位:
bash复制df -h # 确认挂载点
du -xh / | sort -h | tail -n20 # 找大文件
lsof -nP +L1 # 查看被删除但仍占用的文件
9.2 端口冲突解决
查找占用8080端口的进程:
bash复制ss -tlnp | grep 8080
强制释放端口(慎用):
bash复制kill -9 $(lsof -t -i:8080)
10. 命令组合思维训练
10.1 管道连接的艺术
统计每种HTTP方法的请求量:
bash复制awk '{print $6}' access.log | cut -d'"' -f2 | sort | uniq -c
10.2 后台任务管理
将长时间任务放入后台:
bash复制nohup ./long_task.sh > task.log 2>&1 &
disown -h %1
查看后台作业:
bash复制jobs -l
