您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
编写一个服务器故障排查的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
保存脚本:将上述脚本保存为一个文件,例如 server_diagnosis.sh
。
赋予执行权限:
chmod +x server_diagnosis.sh
运行脚本:
./server_diagnosis.sh
ping
命令检查与外部服务器的连接。uptime
命令查看系统负载。df -h
命令查看磁盘使用情况。journalctl
命令查看最近的系统日志。systemctl
命令检查关键服务的状态。netstat
命令查看开放的端口。free -h
命令查看内存使用情况。你可以根据自己的需求添加更多的检查项,例如检查特定进程、查看错误日志等。希望这个示例对你有所帮助!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。