2011-03-20 94 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