多条命令的执行顺序

Tae*_*esh 5 shell cron

我对 Linux 比较陌生,我正在研究用于计划备份的 CronTab。我想出了如何使用;and执行多个连续作业&&,但我不确定依赖项如何影响序列。

我的 cron 工作如下所示:

# Every day at 0:00 (reboot server and do the hourly backup procedure).
0 0 * * * sh shutdown.sh && sh backup.sh ; sh nas.sh ; sh ftp.sh ; sh startup.sh        
Run Code Online (Sandbox Code Playgroud)

我想要发生的是运行 shutdown.sh 并在成功时继续序列,但如果失败则取消它。我担心它只会跳过sh backup.sh然后继续序列。

它会按预期工作吗?如果没有,类似的事情shutdown && (backup ; nas ; ftp ; startup)可能吗?

Spa*_*awk 10

为什么不使用一些您知道会起作用或会失败的虚拟命令来测试它呢?

$ ls foo && echo ok1 ; echo ok2
ls: cannot access foo: No such file or directory
ok2

$ ls foo && (echo ok1 ; echo ok2)
ls: cannot access foo: No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以看起来你的直觉是正确的,你需要第二种结构。


正如mikeserv建议那样,对于一般测试,您可以使用true(或:) 和false,而不是ls不存在的文件。因此,

$ false && echo ok1 ; echo ok2
ok2

$ false && (echo ok1 ; echo ok2)
Run Code Online (Sandbox Code Playgroud)