簡體   English   中英

“monit restart <service> “我怎么知道什么時候重啟?

[英]“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)使用statussummary命令

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM