[Ubuntu] 定時檢查服務是否存活並重新啟動

使用crontab排程定時檢查服務是否存活,如果不存在則自動重啟

預期目標

每分鐘檢查某個服務或是程序是否存活,如果沒有在執行中,則自動重新啟動

使用工具

設定步驟

  1. 使用vim建立shell script檔案
    vim watchdog.sh
  2. 按下 i 進入文字編輯模式,並貼上以下內容
    #!/bin/bash
    
    if pgrep -x "mosquitto" > /dev/null
    then
            echo "Running"
    else
            echo "Stopped"
            systemctl restart mosquitto
    fi

     

  3. mosquitto換成要監視的目標服務或是程序,systemctl restart mosquitto可以換成其他重啟的指令
  4. 按下ESC,並輸入 :wq 存檔離開
  5. 設定執行權限chmod +x watchdog.sh
  6. 進入crontab的編輯畫面crontab -e
  7. 在檔案下方新增,這邊是以檔案放在/root目錄為例,請自行替換成真正的目錄;5個*則是每分鐘都執行一次
    * * * * * /root/watchdog.sh >/dev/null 2>&1
  8. 存檔離開,設定完成

 

參考資料

文章內容僅提供技術分享,如有錯誤還請不吝指教。