当前一个命令完成后,通过 UNIX 脚本执行连续命令



我有一个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 &

最新更新