检查程序的状态

时间:2011-03-20 20:33:27

标签: bash

如果我只是在命令提示符下键入:if [ ! "$(pgrep vlc)" ]; then echo not running; else echo running; fi,这总是有效的,但是一旦我把它作为脚本,给它chmod + x并运行它我总是以“运行”作为输出。有人可以给我带头吗?

#!/bin/bash
export DISPLAY=:0


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

4 个答案:

答案 0 :(得分:2)

如果您的脚本名称包含'vlc',则pgrep会发现该脚本正在运行且if条件为false,即使真正的VLC未运行。

答案 1 :(得分:1)

您可以插入

   echo "$(pgrep vlc)"

if stament之前

答案 2 :(得分:1)

您可以更有选择性地使用pgrep命令。没有必要使用命令替换和括号。

#!/bin/bash
export DISPLAY=:0

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

答案 3 :(得分:0)

另一个避免与你自己的脚本混淆的选择是使用ps' -C'旗 (我不知道它有多便携)

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