三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Linux运维进阶:高效命令组合与系统管理技巧

Linux运维进阶:高效命令组合与系统管理技巧

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.conf

2.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 {} + # 目录755

5.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.log

7. 实用小技巧合集

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,遇到问题时快速查阅。记住,理解每个参数的含义比死记硬背更重要。

← 返回列表