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