BASH:延迟异步运行命令

Mal*_*ala 8 bash delay

实际上,我试图完成的是以下内容,其中 cmd1 需要一段时间才能运行(~1 分钟),而 cmd2 几乎在每次运行时立即返回:

  1. cmd1 启动
  2. 稍等片刻(~10 秒)
  3. cmd2 运行
  4. 再等一会儿
  5. cmd2 再次运行
  6. 过了一段时间
  7. cmd1 结束

必须编写脚本,因为它必须进入一个相当大的循环,该循环使用许多不同的参数运行 cmd1,然后对其他几个长时间运行的命令再次执行相同的操作。

我怎样才能做到这一点?

aki*_*ira 13

cmd1 &
cmd1_pid=$!
sleep 10
cmd2
sleep 10
cmd2
wait $cmd1_pid
Run Code Online (Sandbox Code Playgroud)

解释:cmd1 &在shell后台启动一个进程。该$!变量包含该后台进程的 pid。shell 继续处理其他 cmds。sleep 10意思是“稍等片刻”。OP 只是想以cmd2线性顺序触发,所以这部分是微不足道的。在脚本片段的末尾,我们只是等待cmd1完成(甚至可能更早完成)wait $cmd1_pid