Linux 進程守護腳本

創(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
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容