Linux系统诊断包脚本
基础诊断收集脚本
#!/bin/bash
# collect_diag.sh - 系统诊断信息收集
# 设置输出目录
OUTPUT_DIR="/tmp/diag_$(hostname)_$(date +%Y%m%d_%H%M%S)"
mkdir -p $OUTPUT_DIR
echo "开始收集诊断信息..."
# 系统基本信息
{
echo "=== 主机名 ==="
hostname
echo "=== 系统信息 ==="
uname -a
echo "=== 发行版 ==="
cat /etc/os-release 2>/dev/null || cat /etc/redhat-release 2>/dev/null
echo "=== 运行时间 ==="
uptime
} > $OUTPUT_DIR/system_info.txt
# CPU和内存信息
{
echo "=== CPU信息 ==="
lscpu
echo "=== 内存信息 ==="
free -h
echo "=== 内存详细 ==="
cat /proc/meminfo
} > $OUTPUT_DIR/cpu_memory.txt
# 磁盘信息
{
echo "=== 磁盘使用 ==="
df -h
echo "=== 磁盘分区 ==="
lsblk
echo "=== 挂载信息 ==="
mount
} > $OUTPUT_DIR/disk_info.txt
# 网络信息
{
echo "=== 网络接口 ==="
ip addr
echo "=== 路由表 ==="
route -n
echo "=== DNS配置 ==="
cat /etc/resolv.conf
echo "=== 网络连接 ==="
netstat -tulpn 2>/dev/null || ss -tulpn
} > $OUTPUT_DIR/network_info.txt
# 进程信息
{
echo "=== 进程列表 ==="
ps aux --sort=-%mem | head -20
echo "=== 服务状态 ==="
systemctl list-units --state=failed
systemctl list-units --type=service --state=running
} > $OUTPUT_DIR/process_info.txt
# 日志信息
{
echo "=== 系统日志(最近100行) ==="
tail -100 /var/log/messages 2>/dev/null || tail -100 /var/log/syslog
echo "=== 内核日志(最近50行) ==="
dmesg | tail -50
} > $OUTPUT_DIR/logs.txt
# 打包
tar -czf /tmp/diag_$(hostname)_$(date +%Y%m%d_%H%M%S).tar.gz $OUTPUT_DIR
echo "诊断包已生成: /tmp/diag_$(hostname)_$(date +%Y%m%d_%H%M%S).tar.gz"
Docker容器诊断脚本
#!/bin/bash
# docker_diag.sh - Docker容器诊断
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
OUTPUT_FILE="/tmp/docker_diag_${TIMESTAMP}.tar"
# 收集Docker信息
{
echo "=== Docker版本 ==="
docker version
echo "=== Docker信息 ==="
docker info
} > /tmp/docker_info.txt
# 收集容器状态
{
echo "=== 运行中的容器 ==="
docker ps
echo "=== 所有容器 ==="
docker ps -a
} > /tmp/docker_containers.txt
# 收集镜像信息
docker images > /tmp/docker_images.txt
# 收集资源使用
docker stats --no-stream > /tmp/docker_stats.txt
# 具体应用日志(可自定义)
docker logs webapp --tail 100 > /tmp/webapp_logs.txt 2>&1
# 打包
tar -cf $OUTPUT_FILE /tmp/docker_info.txt /tmp/docker_containers.txt \
/tmp/docker_images.txt /tmp/docker_stats.txt /tmp/webapp_logs.txt
gzip $OUTPUT_FILE
echo "Docker诊断包: ${OUTPUT_FILE}.gz"
网络诊断脚本
#!/bin/bash
# network_diag.sh - 网络诊断工具集
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
DIAG_DIR="/tmp/network_diag_${TIMESTAMP}"
mkdir -p $DIAG_DIR
# 基础网络测试
echo "测试网络连通性..."
ping -c 4 google.com > $DIAG_DIR/ping_google.txt 2>&1
ping -c 4 baidu.com > $DIAG_DIR/ping_baidu.txt 2>&1
# DNS测试
echo "测试DNS解析..."
nslookup google.com > $DIAG_DIR/dns_google.txt 2>&1
dig google.com > $DIAG_DIR/dig_google.txt 2>&1
# 路由追踪
echo "路由追踪..."
traceroute google.com > $DIAG_DIR/traceroute_google.txt 2>&1
# 端口检测
echo "端口扫描..."
nc -zv localhost 80 2>&1 || echo "端口80未开放" > $DIAG_DIR/port_80.txt
nc -zv localhost 443 2>&1 || echo "端口443未开放" > $DIAG_DIR/port_443.txt
# 带宽测试(需要安装speedtest-cli)
# speedtest-cli --simple > $DIAG_DIR/speedtest.txt 2>&1
# 打包
tar -czf /tmp/network_diag_${TIMESTAMP}.tar.gz $DIAG_DIR
echo "网络诊断包: /tmp/network_diag_${TIMESTAMP}.tar.gz"
Java应用诊断脚本
#!/bin/bash
# java_diag.sh - Java应用诊断
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
APP_PID=$(pgrep -f "java.*your-app-name")
if [ -z "$APP_PID" ]; then
echo "未找到Java进程"
exit 1
fi
# 获取线程dump
jstack $APP_PID > /tmp/thread_dump_${TIMESTAMP}.txt
# 获取堆dump(注意:会暂停应用)
# jmap -dump:live,format=b,file=/tmp/heap_dump_${TIMESTAMP}.hprof $APP_PID
# 获取GC日志
jstat -gcutil $APP_PID 1000 10 > /tmp/gc_stats_${TIMESTAMP}.txt
# 获取JVM参数
jinfo -flags $APP_PID > /tmp/jvm_flags_${TIMESTAMP}.txt
# 内存映射
jmap -heap $APP_PID > /tmp/heap_info_${TIMESTAMP}.txt
echo "Java诊断文件已生成:"
echo " - 线程dump: /tmp/thread_dump_${TIMESTAMP}.txt"
echo " - GC统计: /tmp/gc_stats_${TIMESTAMP}.txt"
echo " - JVM参数: /tmp/jvm_flags_${TIMESTAMP}.txt"
使用示例和自动化
一键收集所有诊断
#!/bin/bash # collect_all.sh - 一键收集所有诊断 echo "开始收集系统诊断..." bash collect_diag.sh echo "开始收集Docker诊断..." bash docker_diag.sh echo "开始收集网络诊断..." bash network_diag.sh echo "所有诊断包已生成" ls -lh /tmp/*.tar.gz
使用建议
-
脚本权限

chmod +x collect_diag.sh
-
定时自动化
# 添加crontab 0 */6 * * * /path/to/collect_diag.sh
-
远程收集
# SSH远程执行 ssh user@server 'bash -s' < collect_diag.sh
批量收集
for host in server1 server2 server3; do ssh $host 'bash -s' < collect_diag.sh & done wait
这些脚本可以根据具体需求修改,添加或删除收集项,建议将脚本保存到版本控制中,方便管理和更新。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播