我正在研究一个批处理启动器脚本,目的是:
我对参数很好,但是我无法实现“已经运行”的东西。这是我的工作:
# Check whether the batch is running.
# The check is pretty simple: open a running pid file and check that the process
# is alive and launched by the given username.
# $1 : Path to the PID file to check
# $2 : Username to check
# return : 0 if batch is running
# 1 if batch is not running
isrunning() {
# Check for running app
if [ -f "$1" ]; then
proc=$(cat $1);
if ps --pid=$proc -o uname=,pid=,time= | grep $2
then
return 0
fi
fi
return 1
}
猫没事,我在文件中得到了值(批处理PID)。但是这行
if ps --pid=$proc -o uname=,pid=,time= | grep $2
我正在努力。在我看来,如果应用于ps命令的grep返回某项,则我返回0,因此该脚本将认为进程正在运行,因此会以适当的返回码在更高级别退出。
哪里出错了?
编辑
好吧,问题不在于这部分代码,而是与超时命令结合使用。
我想执行两次程序,以查看我的第二次执行是否返回错误代码,并显示“批处理已在运行”错误,但是我将超时值设置得过低,因此返回了超时代码我等待的代码。很抱歉给您带来不便,也感谢您为我提供的帮助