Bootstrap

用shell脚本写一个通用的监听程序异常并重启脚本

进来服务器的程序php-fpm时常在并发下时常挂掉,而且时常在凌晨2点以后,通过排查是因为php配置需要调整并发,同时,为了不影响我休息(以前老师说:能用机器和程序解决问题的坚决不用人去操作,这样才会提高效率),我增加了一个shell监听php-fpm进程,如果异常就自动重启的脚本。

图片

下面介绍一下我是如何操作的:

  1. 创建一个日志文件目录

# 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分钟,天天学习一点点,天天进步一点点。

;