2011-03-20 99 views
0

如果我只是在命令提示符下鍵入:if [ ! "$(pgrep vlc)" ]; then echo not running; else echo running; fi,但是一旦我將其設置爲腳本,給它chmod + x並運行它,我總是會將「running」作爲輸出。有人能給我帶頭嗎?檢查程序的狀態

#!/bin/bash 
export DISPLAY=:0 


if [ ! "$(pgrep vlc)" ]; then echo not running; else echo running; fi 
+1

你是如何調用該腳本? – Mat 2011-03-20 20:38:46

+0

我認爲你是對的,我正在通過名稱「checkvlc.sh」來調用腳本,它正在爲我註冊爲一個過程(當然) – 2011-03-20 20:53:24

回答

1

您可以在if stament

+0

是的,你指向我,我叫「checkforvlc.sh」當然,這顯示在ps列表中。謝謝。 – 2011-03-20 20:52:51

2

如果你的腳本的名稱中包含「VLC」前插入

echo "$(pgrep vlc)" 

指派,開創該腳本運行,如果是假的條件,即使真正的VLC沒有運行。

1

對於您的pgrep命令,您可以更具選擇性。沒有必要使用命令替換和括號。

#!/bin/bash 
export DISPLAY=:0 

if ! pgrep -f "/path/to/vlc " >/dev/null; then echo not running; else echo running; fi 
0

另一種選擇,以避免與您自己的腳本的mixup是利用PS的「-C」標誌 (我不知道它是怎麼雖然便攜式)

if ps -C vlc > /dev/null ; then echo running; else echo not runing; fi