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

发布时间:2025-05-15 15:27:42 作者:小樊
来源:亿速云 阅读:96

编写一个服务器故障排查的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
    

脚本说明

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

推荐阅读:
  1. 如何高效进行服务器运维
  2. Sysadmin必学的系统管理技巧有哪些

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

服务器运维

上一篇:数据完整性受损会带来哪些影响

下一篇:如何优化云原生应用的资源利用率

相关阅读

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

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