2013-02-13 63 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