常用运维工具箱
本文整理日常运维工作中的常用工具和脚本,涵盖系统监控、日志分析、网络诊断、安全审计等场景,提升故障排查效率。
系统监控工具
htop - 交互式进程查看器
# 安装
apt install htop
# 使用
htop
# 快捷键
# F1 - 帮助
# F3 - 搜索进程
# F4 - 过滤进程
# F5 - 树形显示
# F9 - 杀死进程
# F10 - 退出
glances - 全能系统监控
# 安装
pip install glances
# 基本使用
glances
# Web 模式
glances -w
# 导出到 InfluxDB
glances --export influxdb
dstat - 系统资源统计
# 实时监控
dstat -cdngy 1
# 输出到 CSV
dstat --output report.csv 1 10
日志分析工具
journalctl - systemd 日志
# 查看所有日志
journalctl
# 查看服务日志
journalctl -u nginx
# 实时跟踪
journalctl -u myapp -f
# 查看特定时间段
journalctl --since "2024-01-01 10:00:00" --until "2024-01-01 11:00:00"
# 按优先级过滤
journalctl -p err
lnav - 日志文件查看器
# 安装
apt install lnav
# 查看多个日志文件
lnav /var/log/nginx/access.log /var/log/nginx/error.log
# 自动解压
lnav /var/log/nginx/access.log.*.gz
网络诊断工具
tcpdump - 网络抓包
# 抓取所有流量
tcpdump -i eth0
# 抓取特定端口
tcpdump -i eth0 port 80
# 抓取特定主机
tcpdump -i eth0 host 192.168.1.1
# 保存到文件
tcpdump -i eth0 -w capture.pcap
# 读取 pcap 文件
tcpdump -r capture.pcap
mtr - 网络路径分析
# 实时跟踪路由
mtr google.com
# 报告模式
mtr -r -c 100 google.com
# 显示 IP 地址
mtr -n google.com
nmap - 网络扫描
# 主机发现
nmap -sn 192.168.1.0/24
# 端口扫描
nmap -p 1-65535 192.168.1.1
# 服务版本检测
nmap -sV 192.168.1.1
# 操作系统检测
nmap -O 192.168.1.1
# 全面扫描
nmap -A 192.168.1.1
iperf3 - 网络带宽测试
# 服务端
iperf3 -s
# 客户端测试
iperf3 -c server_ip -t 60
# UDP 测试
iperf3 -c server_ip -u -b 1000M
磁盘与存储工具
ncdu - 磁盘使用分析
# 安装
apt install ncdu
# 分析当前目录
ncdu
# 分析指定目录
ncdu /var/log
# 导出报告
ncdu -o report.json /home
iotop - IO 监控
# 实时监控磁盘 IO
iotop
# 只显示有 IO 的进程
iotop -o
# 非交互模式
iotop -b -n 5
安全审计工具
lynis - 安全扫描
# 安装
apt install lynis
# 执行安全审计
lynis audit system
# 查看报告
cat /var/log/lynis-report.dat
rkhunter - Rootkit 检测
# 安装
apt install rkhunter
# 更新数据库
rkhunter --update
# 执行检测
rkhunter --check
chkrootkit - Rootkit 检测
# 安装
apt install chkrootkit
# 执行检测
chkrootkit
实用脚本
系统信息收集
cat > /usr/local/bin/sysinfo.sh <<'EOF'
#!/bin/bash
echo "=== 系统信息 ==="
echo "主机名: $(hostname)"
echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo "内核版本: $(uname -r)"
echo "架构: $(uname -m)"
echo -e "\n=== CPU 信息 ==="
nproc
cat /proc/cpuinfo | grep "model name" | head -1
echo -e "\n=== 内存信息 ==="
free -h
echo -e "\n=== 磁盘信息 ==="
df -h
echo -e "\n=== 网络信息 ==="
ip addr show | grep inet
echo "公网 IP: $(curl -s ifconfig.me)"
echo -e "\n=== 运行时间 ==="
uptime
EOF
chmod +x /usr/local/bin/sysinfo.sh
日志清理脚本
cat > /usr/local/bin/clean-logs.sh <<'EOF'
#!/bin/bash
# 保留天数
KEEP_DAYS=30
# 清理日志目录
LOG_DIRS="/var/log /home/*/logs"
for dir in $LOG_DIRS; do
if [ -d "$dir" ]; then
find "$dir" -type f -name "*.log" -mtime +$KEEP_DAYS -delete
find "$dir" -type f -name "*.log.*" -mtime +$KEEP_DAYS -delete
fi
done
# 清理 journal
journalctl --vacuum-time=${KEEP_DAYS}d
echo "日志清理完成"
EOF
chmod +x /usr/local/bin/clean-logs.sh
Docker 清理脚本
cat > /usr/local/bin/docker-cleanup.sh <<'EOF'
#!/bin/bash
# 停止的容器
docker container prune -f
# 未使用的镜像
docker image prune -a -f
# 未使用的卷
docker volume prune -f
# 未使用的网络
docker network prune -f
# 构建缓存
docker builder prune -f
echo "Docker 清理完成"
EOF
chmod +x /usr/local/bin/docker-cleanup.sh
性能分析工具
perf - Linux 性能分析
# 安装
apt install linux-tools-common
# CPU 分析
perf top
# 记录性能数据
perf record -g ./myapp
# 生成报告
perf report
strace - 系统调用跟踪
# 跟踪系统调用
strace -p PID
# 跟踪并统计
strace -c ./myapp
# 跟踪文件操作
strace -e trace=file ./myapp
gdb - 调试器
# 附加到进程
gdb -p PID
# 调试程序
gdb ./myapp
# 常用命令
# bt - 查看调用栈
# info registers - 查看寄存器
# continue - 继续运行
# quit - 退出
快捷命令别名
cat >> ~/.bashrc <<'EOF'
# 系统
alias df='df -h'
alias du='du -h'
alias free='free -h'
# 网络
alias ports='netstat -tulanp'
alias myip='curl ifconfig.me'
# Docker
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dlogs='docker logs -f'
alias dclean='docker system prune -f'
# K8s
alias k='kubectl'
alias kg='kubectl get'
alias kd='kubectl describe'
alias kdel='kubectl delete'
# 其他
alias ..='cd ..'
alias ...='cd ../..'
alias l='ls -la'
alias grep='grep --color=auto'
EOF
source ~/.bashrc
小结
本文整理的运维工具涵盖了日常工作的各个方面:
- 监控:htop, glances, dstat
- 日志:journalctl, lnav
- 网络:tcpdump, mtr, nmap, iperf3
- 存储:ncdu, iotop
- 安全:lynis, rkhunter
- 脚本:系统信息、日志清理、Docker 清理
建议根据工作环境选择合适的工具,并将常用脚本加入自动化任务。
参考资料: