1. Linux常用命令进阶指南
作为Linux系统管理员,掌握常用命令是基本功。上次我们介绍了基础命令,这次将深入探讨更实用的进阶命令组合。这些命令不仅能提升工作效率,还能解决实际运维中的各种问题。
2. 文件与目录管理进阶
2.1 查找与定位命令
find命令是Linux下最强大的文件搜索工具。我经常使用这个组合:
find /path -name "*.log" -mtime +30 -size +10M -exec ls -lh {} \;这个命令会查找/path目录下30天前修改过且大于10MB的日志文件,并显示详细信息。其中:
-name指定文件名模式-mtime按修改时间筛选-size按文件大小筛选-exec对找到的文件执行后续命令
注意:find的-exec参数会为每个找到的文件执行一次命令,如果文件很多会影响性能。可以使用
+代替\;来批量处理。
locate命令比find更快,因为它查询预建的数据库:
updatedb # 先更新数据库 locate nginx.conf2.2 文件内容处理三剑客
grep、awk和sed是文本处理的黄金组合。我常用的grep技巧:
grep -rn "error" /var/log/ # 递归搜索目录中的error关键词 grep -v "^#" /etc/nginx/nginx.conf # 排除注释行awk特别适合处理结构化文本,比如分析日志:
awk '{print $1,$7}' access.log | sort | uniq -c | sort -nr | head -10这个管道命令会统计访问日志中最频繁的10个IP和URL组合。
sed则擅长批量修改文件:
sed -i 's/old/new/g' file.txt # 替换文件内容 sed -n '10,20p' file.log # 打印10-20行3. 系统监控与性能分析
3.1 实时监控工具
top命令的增强版htop提供了更直观的界面:
htop -d 10 # 10秒刷新间隔在htop中,可以:
- 按F5树形显示进程
- 按F2配置显示列
- 按F9发送信号给进程
iotop和iftop分别监控磁盘和网络IO:
iotop -o # 只显示有IO的进程 iftop -n -i eth0 # 监控eth0网卡流量3.2 系统资源分析
free命令查看内存使用情况:
free -h # 人类可读格式 watch -n 1 free -h # 每秒刷新vmstat可以查看系统整体性能:
vmstat 1 5 # 每秒1次,共5次关键指标:
- r: 运行队列长度
- b: 阻塞进程数
- si/so: 交换区换入换出
4. 网络工具深度使用
4.1 网络连接分析
ss命令替代了netstat,更快速:
ss -tulnp # 查看监听端口和进程 ss -s # 统计信息tcpdump是网络抓包利器:
tcpdump -i eth0 -nn 'port 80' -w http.pcap常用过滤表达式:
- host 192.168.1.1
- port 22
- tcp[tcpflags] & (tcp-syn) != 0
4.2 网络测试工具
curl的进阶用法:
curl -v -o /dev/null -s -w "%{time_total}\n" http://example.com # 测试响应时间 curl -x http://proxy:8080 -U user:pass https://site.com # 通过代理访问mtr结合了traceroute和ping:
mtr -n -c 100 -i 0.1 google.com # 发送100个包,间隔0.1秒5. 系统管理与维护
5.1 用户与权限管理
查看用户登录历史:
last -n 10 # 最近10次登录 lastb # 失败的登录尝试批量修改文件权限:
find /path -type f -exec chmod 644 {} + # 文件644 find /path -type d -exec chmod 755 {} + # 目录7555.2 定时任务管理
crontab的实用技巧:
crontab -l # 查看当前任务 crontab -e # 编辑任务常用时间格式:
*/5 * * * *每5分钟0 3 * * 1每周一3点@reboot启动时运行
重要:cron的环境变量与交互shell不同,脚本中最好使用绝对路径。
6. 日志分析实战
6.1 日志文件轮转
logrotate配置示例:
/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate /usr/sbin/nginx -s reload endscript }6.2 实时日志监控
tail命令的-f参数可以实时跟踪日志:
tail -f /var/log/syslog | grep --line-buffered "error"multitail可以同时监控多个日志:
multitail -i /var/log/nginx/access.log -i /var/log/nginx/error.log7. 实用小技巧合集
7.1 命令行效率提升
使用history命令优化工作流:
!vim # 执行最近以vim开头的命令 ^old^new # 替换上条命令中的字符串screen/tmux保持会话:
tmux new -s session_name # 新建会话 tmux attach -t session_name # 恢复会话7.2 数据备份与同步
rsync的常用参数:
rsync -avz --delete /source/ user@remote:/dest/ # 镜像同步 rsync -avz --progress largefile user@remote:/path/ # 显示进度tar的压缩技巧:
tar -czvf backup.tar.gz --exclude='*.tmp' /data # 排除临时文件 tar -xzvf backup.tar.gz -C /target # 解压到指定目录8. 问题排查与调试
8.1 进程调试
strace跟踪系统调用:
strace -f -o debug.log ./program # 跟踪程序执行 strace -p 1234 # 跟踪运行中的进程lsof查看打开的文件:
lsof -i :80 # 查看80端口的进程 lsof /var/log/syslog # 查看谁在使用日志文件8.2 性能瓶颈分析
perf工具的基本用法:
perf top # 实时性能分析 perf record -g ./program # 记录性能数据 perf report # 分析记录sar收集系统活动报告:
sar -u 1 3 # CPU使用率,每秒1次共3次 sar -r # 内存使用情况掌握这些命令组合后,你会发现Linux运维效率能提升数倍。在实际工作中,我建议把这些常用命令整理成cheatsheet,遇到问题时快速查阅。记住,理解每个参数的含义比死记硬背更重要。