Linux 进程守护脚本

创建进程守护脚本

vi check_and_restart.sh

check_and_restart.sh 脚本内容:

# 治理服务进程守护
#!/bin/bash
# 导入依赖环境变量
export LD_LIBRARY_PATH="/usr/instantclient_11_2:$LD_LIBRARY_PATH"

# Go 程序的路径
APP_PATH="/home/test/website/govern-service/"
APP_NAME="govern-service"

# 运行状态日志文件
RUNNING_LOG_FILE="/home/test/website/govern-service/check_and_running.log"
# 通用日志文件
LOG_FILE="/home/test/website/govern-service/check_and_restart.log"
# 定义 nohup 日志文件,放在 APP_PATH目录下
NOHUP_LOG_FILE="$APP_PATH/nohup.out"

# 将运行状态日志文件清空,确保只保留最新的日志
> $RUNNING_LOG_FILE

# 使用 pgrep 来检查进程是否存在,而不是 ps 和 grep 的组合
PGREP_RESULT=$(pgrep -x govern-service)
# echo "$(date +\%Y-\%m-\%d_\%H:\%M:\%S): pid: $PGREP_RESULT " >> $LOG_FILE

# 检查程序是否正在运行
if [ -z "$PGREP_RESULT" ]
then
    echo "$(date +\%Y-\%m-\%d_\%H:\%M:\%S): $APP_NAME is not running. Restarting..." >> $LOG_FILE
    # 启动程序
    echo "APP_PATH=$APP_PATH" >> $LOG_FILE
    cd $APP_PATH && nohup ./$APP_NAME >> "$NOHUP_LOG_FILE" 2>&1 &
    echo "$(date +\%Y-\%m-\%d_\%H:\%M:\%S): $APP_NAME has been restarted." >> $LOG_FILE
else
    echo "$(date +\%Y-\%m-\%d_\%H:\%M:\%S): $APP_NAME is running." >> $RUNNING_LOG_FILE
fi

添加执行权限

chmod +x check_and_restart.sh

创建定时任务

crontab -e
# 添加执行脚本
*/1 * * * * /home/test/website/govern-service/check_and_restart.sh
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容