2016-12-08 50 views
0

如何判斷延遲作業是否正在運行或不在後臺登臺。如果它停止,所以它應該開始運行通過檢查一些進程PID等。我的問題是分期延遲作業停止有時我無法弄清楚它爲什麼會發生,所以任何人都可以告訴我該怎麼做才能解決這個問題。 這是我檢查檢查狀態Rails延遲作業停止在舞臺上

RAILS_ENV=staging ./script/delayed_job status 

的命令,但我需要做的事情拖延作業是否正在運行應自動地檢查或不不。如果它應該開始運行

+0

IMO它是不是應用程序的責任監督並啓動外部進程。我建議使用[監控工具](https://www.ruby-toolbox.com/categories/server_monitoring)(如god或bluepill)來監控所有需要的進程已啓動並正在運行。 – spickermann

回答

1

在根目錄下創建一個shell腳本文件並放置此代碼。
然後給權限的文件

ps_out=`ps -ef | grep delayed | grep -v 'grep' | grep -v $0` 
result=$(echo $ps_out | grep "$1") 
if [[ "$result" != "" ]];then 
    echo "Running" 
else 
    /path-to-your-project/delayed_job start 
fi 

現在加上這在crontab中

crontab -e 
0

要監視是否進程正在運行(並可選擇重新啓動它),請使用類似god的東西。

如果您的後臺工作正在死亡,您應該增加日誌詳細程度,並可能使用遠程例外通知程序,如Airbrake

有幾十個替代品,請做你自己的研究。

要手動檢查是否有一個進程在運行,使用

> ps aux 

或頂部或HTOP列出現有的流程。