2013-08-27 12 views
0

我想在Shell腳本中創建一個監視腳本。當一個特定的進程/線程不可用時,我必須啓動一個永不結束的後臺進程。 這工作正常,當我手動運行我的監控腳本。 但是,這個監控腳本必須每10分鐘運行一次(我嘗試使用crontab進行調度)。現在,問題在於如果通過crontab調用腳本,監視腳本中的後臺進程將不會運行。需要添加一個「具有後臺進程的Shellscript」到一個crontab

任何幫助表示讚賞!如果可以免費獲得,我也可以使用任何其他Linux調度程序。

監控腳本的僞代碼如下:

#!/bin/sh 
backgroundProcessCount=`ps -ef | grep backgroundProcess | grep -v grep | wc -l` 
    echo $backgroundProcessCount 
    #### Start if not already running 
    if [ $backgroundProcessCount-eq 0 ] 
    then 
      echo Background Process is not running!!! 
      sh /usr/share/bin/backgroundProcess.sh 
      echo Background Process.... 
    else 
      echo Background Process NOT Started!!!! 
    fi 

謝謝!

+0

有沒有錯誤?它甚至運行? –

+0

任何代碼,你可以告訴我們嗎? – konsolebox

+0

@Aleks沒有錯誤。它默默地出來:( – invisible

回答

1

你也可以考慮登錄這樣的腳本可能發生的可能的錯誤:

#!/bin/sh 
{ 
    backgroundProcessCount=`ps -ef | grep backgroundProcess | grep -v grep | wc -l` 
    echo $backgroundProcessCount 
    #### Start if not already running 
    if [ $backgroundProcessCount-eq 0 ] 
    then 
      echo Background Process is not running!!! 
      sh /usr/share/bin/backgroundProcess.sh 
      echo Background Process.... 
    else 
      echo Background Process NOT Started!!!! 
    fi 
} >/var/log/something 2>&1 

這可能會幫助你找到是什麼原因導致後臺進程運行。

+0

謝謝!錯誤日誌幫助我發現問題。問題出在classpath上。我修好了..再次感謝!再多快一點。什麼是「2>&1」是指? – invisible

+0

它複製fd 1到2,所以發送到2的任何東西實際上都會發送到1.所以在上面的情況下,因爲1已經被重定向到/ var/log/something,所以發送2的東西也會被髮送到文件中。 – konsolebox