我有一个Unix脚本,其中命令需要重复执行,但只有在前一个命令成功完成时才能下次运行该命令。我搜索了可以判断脚本已完成执行的命令,但找不到它。我是 unix 脚本的新手,开始喜欢 unix 脚本。
为了使命令仅在前一个命令成功后执行,您需要将两者编写为:
command1 && command2
要使用单个命令将其包含在循环中,您需要检查每个调用的返回状态,如果不成功,则退出循环;最短的形式应该是这样的:
while your_command; do :; done
您也可以插入sleep
而不是 NOOP :
。
您需要将
后台命令的 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 &