用shell脚本写一个通用的监听程序异常并重启脚本
进来服务器的程序php-fpm时常在并发下时常挂掉,而且时常在凌晨2点以后,通过排查是因为php配置需要调整并发,同时,为了不影响我休息(以前老师说:能用机器和程序解决问题的坚决不用人去操作,这样才会提高效率),我增加了一个shell监听php-fpm进程,如果异常就自动重启的脚本。
下面介绍一下我是如何操作的:
-
创建一个日志文件目录
# cd /var/log
# mkdir script
# cd script
2. 创建一个日志文件
# echo "" > php-fpm-restart.log
3. 编写shell脚本,监听服务进程是否异常,异常则自动重启并写入日志
vi 创建一个php-fpm.sh脚本
#!/bin/bash
CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S")
LOG_FILE="/var/log/script/php-fpm-restart.log"
if systemctl status php8.1-fpm > /dev/null 2>&1; then
echo 'php8.1-fpm is running'
echo "${CURRENT_TIME} php8.1-fpm is running." >> ${LOG_FILE}
else
echo 'php8.1-fpm is not running'
systemctl start php8.1-fpm
echo "${CURRENT_TIME} php8.1-fpm is not running ,already restart success." >> ${LOG_FILE}
fi
给shell脚本分配可以执行权限
chmod +x php-fpm.sh
4. 增加linux定时crontab任务 crontab -e
5. 查看执行日志 cat /var/log/script/php-fpm-restart.log
6. 总结这个脚本的通用性,其他程序都可以稍微改改就能使用,简单方便快捷
上面脚本只需更改需要监听的程序即可实现你需要监听的程序,比如:
#!/bin/bash
CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S")
LOG_FILE="/var/log/script/nginx-restart.log"
if systemctl status nginx > /dev/null 2>&1; then
echo 'nginx is running'
echo "${CURRENT_TIME} nginx is running." >> ${LOG_FILE}
else
echo 'nginx is not running'
systemctl start nginx
echo "${CURRENT_TIME} nginx is not running ,already restart success." >> ${LOG_FILE}
fi
所以上面shell脚本,根据你自身需要可以随意变通。
以上是小哥本人文章的全部内容,希望总结会帮助到各位看官。最后,小哥温馨提示:每天阅读3分钟,天天学习一点点,天天进步一点点。