如何检查一个shell脚本实例是否已在运行 - Linux

时间:2014-06-11 09:50:53

标签: linux shell

我有两个不同的shell脚本,比如

a.sh 
b.sh

**code of a.sh**

#!/system/bin/sh
#some code
./xyz/b.sh &

在这里,我们可以看到我正在运行b.sha.sh file这是postboot脚本。每次设备重启时,都会添加./xyz/b.sh&我试图避免。

what i am trying to do : 
i need to write a code in such a way that will find if ./system/xyz/b.sh & is already there then no need to add again.



Code : 
if  pgrep /xyz/b.sh > /dev/null 2>&1
then
echo aplog is running
exit 1
fi

这些代码没有运行。不知道我在哪里做错了。

3 个答案:

答案 0 :(得分:0)

试试吧:

pgrep b.sh > /dev/null 2>&1
if [ 0 == $? ]
then
...
fi

答案 1 :(得分:0)

pgrep仅适用于进程名称,而不是进程名称的完整路径。

尝试使用pgrep -f b.sh或pgrep -x b.sh而不是pgrep -x /xyz/b.sh

答案 2 :(得分:-1)

您可以在创建文件之前测试您的文件:

filename="/fullpath/xyz/b.sh"
if [ -f "$filename" ]
then
        echo "$filename found"
else
        echo "$filename not found."
fi