当前位置: 首页 > article >正文

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


http://www.kler.cn/a/413539.html

相关文章:

  • java脚手架系列16-AI大模型集成
  • 初级 Python 数据脱敏技术及应用
  • [创业之路-155] :《领先的密码-BLM方法论全面解读与应用指南》- 综合管理框架
  • JavaEE---计算机是如何工作的?
  • 【2022-数学二】历年真题-2022年-简答题(17-20)
  • 【RISC-V CPU 专栏 -- 香山处理器介绍】
  • notepad++文件github下载
  • Novai Chain 通证派发策略:重塑区块链生态的新范式
  • 【Webgl_glslThreejs】制作流水效果/毛玻璃效果材质
  • c++(斗罗大陆)
  • 基于深度学习的手势识别算法
  • mysql定位慢查询以及分析原因
  • 搭建AD域服务器
  • 【jmeter】服务器使用jmeter压力测试(从安装到简单压测示例)
  • 深入解析下oracle char和varchar2底层存储方式
  • 使用Python实现自动化邮件通知:当长时程序运行结束时
  • Linux环境变量(添加环境变量、修改系统环境变量、内建命令和非内建命令)
  • 51单片机从入门到精通:理论与实践指南入门篇(三)
  • ArraList和LinkedList区别
  • aws服务--机密数据存储AWS Secrets Manager(1)介绍和使用
  • [Unity] 【游戏开发】角色设计3-如何为角色实现响应输入的控制器
  • 数据结构——用链表实现栈和队列
  • git分支管理:release分支内容重置为master
  • 零基础学安全--HTML
  • vue3+antd注册全局v-loading指令
  • CentOS上如何离线批量自动化部署zabbix 7.0版本客户端