創(chuàng)建進程守護腳本
vi check_and_restart.sh
check_and_restart.sh 腳本內(nèi)容:
# 治理服務進程守護
#!/bin/bash
# 導入依賴環(huán)境變量
export LD_LIBRARY_PATH="/usr/instantclient_11_2:$LD_LIBRARY_PATH"
# Go 程序的路徑
APP_PATH="/home/test/website/govern-service/"
APP_NAME="govern-service"
# 運行狀態(tài)日志文件
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"
# 將運行狀態(tài)日志文件清空,確保只保留最新的日志
> $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
添加執(zhí)行權限
chmod +x check_and_restart.sh
創(chuàng)建定時任務
crontab -e
# 添加執(zhí)行腳本
*/1 * * * * /home/test/website/govern-service/check_and_restart.sh