完成上一个命令时,通过unix脚本执行连续命令

时间:2013-10-07 06:50:34

标签: unix

我有一个unix脚本,其中一个命令需要重复执行,但该命令只有在前一个命令成功完成后才能运行。我搜索了可以告诉脚本已经完成执行但我无法找到它的命令。我是unix脚本的新手,并开始喜欢unix脚本。

2 个答案:

答案 0 :(得分:1)

为了使命令仅在前一个命令成功后执行,您需要将两个命令写为:

command1 && command2

要使用单个命令将其置于循环中,您需要检查每个调用的返回状态,如果不成功则退出循环;最短的形式应该是这样的:

while your_command; do :; done

您也可以插入sleep代替NOOP :

答案 1 :(得分:0)

您需要将后台命令的PID(进程ID)存储在某个文件中,以便脚本可以检查它下次启动时是否仍在运行。例如:

if [ ! "kill -0 $(</var/run/myscript-command.pid) 2>/dev/null 1>&2" ]; then
    somecommand&
    $CMD_PID = $!
    echo $CMD_PID >/var/run/myscript-command.pid
fi

为了使这个工作somecommand需要守护自己。如果没有,则将其称为:

nohup ./somecommand 0<&- &>/dev/null &