Bash 在shell中,脚本将同步cmd,直到第一个cmd完全执行为止

Bash 在shell中,脚本将同步cmd,直到第一个cmd完全执行为止,bash,shell,synchronization,Bash,Shell,Synchronization,在shell脚本中,第二个cmd会一直等到第一个cmd被完全执行吗 例如: 同步完成后,cmd2将在此处运行吗?如果同步失败怎么办?来自: 在Linux上,sync只保证为 写实际上,在所有块都被删除之前,可能需要很短的时间 终于写好了。reboot(8)和halt(8)命令考虑到了这一点 调用sync(2)后,帐户将休眠几秒钟 (我强调)你可能也应该这样做。显然,对于必要的等待时间没有上限,也没有办法(至少对于简单用户来说)验证磁盘是否已经处理了排队的命令,这有点麻烦 当然,除了sync之外,

在shell脚本中,第二个cmd会一直等到第一个cmd被完全执行吗

例如:

同步完成后,cmd2将在此处运行吗?如果同步失败怎么办?

来自:

在Linux上,sync只保证为 写实际上,在所有块都被删除之前,可能需要很短的时间 终于写好了。reboot(8)和halt(8)命令考虑到了这一点 调用sync(2)后,帐户将休眠几秒钟

(我强调)你可能也应该这样做。显然,对于必要的等待时间没有上限,也没有办法(至少对于简单用户来说)验证磁盘是否已经处理了排队的命令,这有点麻烦


当然,除了sync之外,所有类型的命令都存在这个问题。邮件可能尚未发送,打印作业可能仍在排队等。此外,正如切普纳所说,任何分叉服务器或其他后台进程的命令(隐式,没有
&
)都将在进程仍在运行时返回。

cmd2
将在
cmd1
退出之前不会执行,是的。但是,如果不知道
cmd1
是什么,就不可能说它在退出之前已经完全完成了任务(它可能会在
cmd1
退出之后派生其他进程)。OP没有运行
sync
,而是运行
cmd1 sync folder1
。如果是
sync
,这将是一个很好的答案(±0)。我将OP的行
cmd1 sync folder1
解释为他正在执行
sync folder1
,他将该行标记为cmd1。一行中的两个命令(无cmdx部件)很有意义。但这也很不相关,因为延迟操作的一般问题,主要是因为对于许多命令来说,命令只是在硬件或软件中将请求排队,或者启动后台操作本身。
cmd1 sync folder1 
cmd2 cp folder1 to folder2