2012-06-29 42 views
1

我想通過pid獲取狀態是否正在運行的輸出。當我將以下內容添加到腳本中時,它僅輸出第一個回顯。該進程是否已被殺死。我在第一個失蹤的是什麼?如果,然後語句爲Bash初始化腳本

status() {   
      if [ 'ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep' ]; 
       echo -e $"$SERVICE1 is currently running \n " 
      else 
       echo -e $"$SERVICE1 is not running \n " 
       RETVAL=$? 
       echo 
      fi 
      fi 
      return $RETVAL 
    } 
+0

第二'fi'必須是多餘的。 –

+0

另請參閱[流程管理](http://mywiki.wooledge.org/ProcessManagement)。 –

回答

1

[的命令是其是用於與所需端]「測試」命令的別名。 bash中的if語句測試命令的退出狀態。在你的情況下,你想測試你的管道的退出狀態,而不是使用測試。

if ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep; then 
    ... 
fi 

您通常不想以這種方式解析ps的輸出。如果可用,請使用pgrep

if pgrep -f "$APPLICATION.*$SERVICE1"; then 
    ... 
fi