使用crontab排程定時檢查服務是否存活,如果不存在則自動重啟
預期目標
每分鐘檢查某個服務或是程序是否存活,如果沒有在執行中,則自動重新啟動
使用工具
- vim 文字編輯工具
- crontab 排程,參考:Linux操作系统定时任务系统 Cron 入门
- systemctl 服務管理,參考:Systemd 入门教程:命令篇
設定步驟
- 使用
vim
建立shell script檔案
vim watchdog.sh
- 按下
i
進入文字編輯模式,並貼上以下內容#!/bin/bash if pgrep -x "mosquitto" > /dev/null then echo "Running" else echo "Stopped" systemctl restart mosquitto fi
- 將
mosquitto
換成要監視的目標服務或是程序,systemctl restart mosquitto
可以換成其他重啟的指令 - 按下
ESC
,並輸入:wq
存檔離開 - 設定執行權限
chmod +x watchdog.sh
- 進入crontab的編輯畫面
crontab -e
- 在檔案下方新增,這邊是以檔案放在/root目錄為例,請自行替換成真正的目錄;5個
*
則是每分鐘都執行一次
* * * * * /root/watchdog.sh >/dev/null 2>&1
- 存檔離開,設定完成
參考資料
- Shell Script 檢查 Process 是否正在執行
- Where is the cron / crontab log?
- How to determine whether a process is running or not and make use it to make a conditional shell script?
文章內容僅提供技術分享,如有錯誤還請不吝指教。