温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

服务器故障排查Shell脚本如何写

发布时间:2025-05-15 15:27:42 来源:亿速云 阅读:117 作者:小樊 栏目:系统运维

编写一个服务器故障排查的Shell脚本可以帮助自动化一些常见的诊断步骤,从而提高效率。下面是一个简单的示例脚本,涵盖了一些基本的故障排查步骤。你可以根据自己的需求进行修改和扩展。

#!/bin/bash

# 服务器故障排查脚本

# 显示脚本开始信息
echo "服务器故障排查脚本开始于 $(date)" | tee -a server_diagnosis.log

# 1. 检查网络连接
echo "==== 检查网络连接 ====" | tee -a server_diagnosis.log
ping -c 4 google.com > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "网络连接正常。" | tee -a server_diagnosis.log
else
    echo "网络连接失败,请检查网络设置。" | tee -a server_diagnosis.log
fi

# 2. 检查服务器负载
echo "==== 检查服务器负载 ====" | tee -a server_diagnosis.log
uptime | tee -a server_diagnosis.log
load=$(uptime | awk '{print $10}' | cut -d. -f1)
if [ $load -gt 8 ]; then
    echo "警告:服务器负载较高 ($load)。" | tee -a server_diagnosis.log
else
    echo "服务器负载正常。" | tee -a server_diagnosis.log
fi

# 3. 检查磁盘空间
echo "==== 检查磁盘空间 ====" | tee -a server_diagnosis.log
df -h | tee -a server_diagnosis.log
echo "" | tee -a server_diagnosis.log

# 4. 检查系统日志(例如:/var/log/messages 或 /var/log/syslog)
echo "==== 检查系统日志 ====" | tee -a server_diagnosis.log
journalctl -n 50 --no-pager | tee -a server_diagnosis.log
echo "" | tee -a server_diagnosis.log

# 5. 检查服务状态(例如:Apache, Nginx, MySQL
services=("ssh" "nginx" "mysql")
for service in "${services[@]}"; do
    echo "==== 检查 $service 服务状态 ====" | tee -a server_diagnosis.log
    systemctl status $service | tee -a server_diagnosis.log
    if [ $? -ne 0 ]; then
        echo "$service 服务未运行或存在问题。" | tee -a server_diagnosis.log
    else
        echo "$service 服务运行正常。" | tee -a server_diagnosis.log
    fi
    echo "" | tee -a server_diagnosis.log
done

# 6. 检查开放端口(例如:80, 443, 22)
echo "==== 检查开放端口 ====" | tee -a server_diagnosis.log
netstat -tulnp | grep -E '80|443|22' | tee -a server_diagnosis.log
echo "" | tee -a server_diagnosis.log

# 7. 检查内存使用情况
echo "==== 检查内存使用情况 ====" | tee -a server_diagnosis.log
free -h | tee -a server_diagnosis.log

# 显示脚本结束信息
echo "服务器故障排查脚本结束于 $(date)" | tee -a server_diagnosis.log

使用说明

  1. 保存脚本:将上述脚本保存为一个文件,例如 server_diagnosis.sh

  2. 赋予执行权限

    chmod +x server_diagnosis.sh
    
  3. 运行脚本

    ./server_diagnosis.sh
    

脚本说明

  • 网络连接检查:使用 ping 命令检查与外部服务器的连接。
  • 服务器负载检查:使用 uptime 命令查看系统负载。
  • 磁盘空间检查:使用 df -h 命令查看磁盘使用情况。
  • 系统日志检查:使用 journalctl 命令查看最近的系统日志。
  • 服务状态检查:使用 systemctl 命令检查关键服务的状态。
  • 开放端口检查:使用 netstat 命令查看开放的端口。
  • 内存使用情况检查:使用 free -h 命令查看内存使用情况。

你可以根据自己的需求添加更多的检查项,例如检查特定进程、查看错误日志等。希望这个示例对你有所帮助!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI