2013-02-13 76 views
1

我有這樣的shell腳本。如果shell腳本中的條件

#!/bin/sh 

s=$1  

pro=`ps -ef | grep $s | grep -v grep | grep -v test3.sh | wc -l` 

if [ $pro -eq 0 ] 
    then 
      echo "Service $s is DOWN..." 
      echo "Service $s is DOWN..." >> processlogs.txt 
      echo "Starting Service $s..." 
      echo "Starting Service $s..." >> processlogs.txt 
      java -jar clientApplication.jar $s & 

else 
      echo "Service $s is Running..." 
      echo "Service $s is Running..." >> processlogs.txt 

fi 

當我執行shell腳本,並且操作進入if條件時,它永遠不會回來。它不斷執行命令「java -jar clientApplication.jar $ s」。但在其他情況下沒有問題。是我的語法錯誤還是任何邏輯錯誤。

謝謝...

+0

$ pro將始終至少爲1,因爲您將's'設置爲$ 1並且$ 1應該顯示在ps -ef | grep $ s – 2013-02-13 05:39:40

回答

1

你應該試試這個...

(java -jar clientApplication.jar $s &) 

...而不是...

java -jar clientApplication.jar $s & 

,如果這不工作來看看nohup

+0

謝謝紅蟋蟀,但都沒有工作。它在IP 100.100.100.186中的VMware中工作,但它在IP 100.100.100.7中不起作用。 IP可以作爲它的因素。 – Suniel 2013-02-13 06:24:54

+0

我想這更多取決於clientApplication.jar的功能。如果它是你的代碼,我會建議將它守護進程,這樣你就不用擔心用shell腳本重啓。 – 2013-02-13 06:47:27

+0

clientApplication只需要參數並連續打印。 – Suniel 2013-02-13 06:49:12