我阅读了以下两种在单个 cron 作业中运行多个命令的方法:
我们可以在同一个 cron 作业中运行多个命令,方法是用分号 (;) 分隔它们。
* * * * * /path/to/command-1; /path/to/command-2
如果运行的命令相互依赖,我们可以在它们之间使用双与号 (&&)。因此,如果第一个命令失败,则不会执行第二个命令。
* * * * * /path/to/command-1 && /path/to/command-2
我的要求是:
- 命令必须按顺序执行(等待当前命令完成后再执行下一个命令)
- 命令必须按给定的顺序执行
- 但是每个命令都应该被执行,即使前一个命令失败了
因此,上面的链接没有说的是:
分号;
方法是否仍然保证命令将按给定顺序按顺序执行?
是的,
;
在命令之间使用将保证所有命令按顺序运行,一个接一个。一个命令的执行将不依赖于前一个命令的退出状态。正如 Paul_Pedant在评论中指出的那样,做任何比从 crontab 启动单个命令更复杂的事情可能最好通过在单独的脚本中收集作业并安排该脚本来完成。这样,您可以独立于 cron 测试和调试脚本,尽管由于 cron 为您提供的环境与普通的登录 shell 环境略有不同,但仍然存在环境因素(例如当前工作目录是什么,
$PATH
以及其他的值是什么)变量等)要记住。