[英]“monit restart <service>” how do I know when it's done restarting?
我們的sysadmin最近切換到使用monit,所以現在當我想重新啟動服務時,我應該使用“monit restart <servicename>”而不是“/etc/init.d/ <servicename> restart”。
但是,monit命令在成功時不會產生任何輸出並立即返回。 看起來直到下一個周期之后它才真正重啟。
我正在重新啟動服務,因為我對它進行了更改。 我不想測試我對舊實例的更改。 所以我需要知道重啟完成的時間。 當我告訴它時,我也希望它重新啟動,而不是當它轉向它時。 在我等待的時候,我不喜歡一遍又一遍地輸入“ps aux | grep <myservicename>”。
有沒有辦法讓monit立即重啟我的服務?
有沒有辦法讓monit,或者monit的包裝器阻塞,直到重啟完成?
有沒有辦法讓monit告訴我重啟成功,否則它失敗了?
Monit是一個非常安靜的計划! 事實上,monit命令往往會立即運行和退出,因為它們在后台運行! 所以......如果你想看看Monit正在做什么,請使用-v
開關,如果你想讓它在前台運行,請使用tail -f
日志文件和-I
。
使用-I
選項 :
monit -I restart servicename
這將禁用后台重啟,例如計算機啟動時需要重啟!
如果要診斷問題,請添加詳細選項-v
:
monit -Iv restart servicename
要檢查結果,您可以嘗試以下幾種方法:
1)monit的返回值
monit -I restart servicename
echo $?
通常, $?
成功時應為零,否則為非零。 但是沒有計划支持它,並沒有對任何信息手冊頁什么是退出狀態( $?
的monit
。 嘗試測試一下。
2)使用status
或summary
命令
monit -I status
要么
monit -I status servicename
要么
monit -I summary
這些命令將返回輸出的狀態。 您可以選擇最適合您的命令並解析其輸出。 或者,如第1點),檢查返回值$?
(在聯機幫助頁中沒有提到)。
人們可以通過運行monit
喚醒monit deamon。 這應該有助於減少等待下一個周期。
執行tail -f monit.log
以查看重啟是否成功或是否失敗。
你可以隨時使用這樣的東西
while test -f pidfile.pid && kill -0 $(cat pidfile.pid);
do
sleep 1;
done;
while ! kill -0 $(cat pidfile.pid);
do
sleep 1;
done
此腳本在重新啟動進程時等待。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.