我想在~/.xinitrc
中并行执行许多命令。
这很容易通过POSIX sh语法归档:
cmd & cmd & ...
但是其中一些依赖项并按顺序运行,但每个序列并行运行。
我来了:
{ cmd1 && cmd2; } &
cmd3 &
{ cmd4 || cmd5; } &
在单个sh进程中执行cmd1
和cmd2
是否从原始sh分叉?
我理解每个人的POSIX:
&&
- 和列表&
- 异步列表{ ...; }
- 在当前环境中执行的复合列表但是当这些语法单元一起使用时,不能推断出执行语义。
(cmd)
是否等同于{cmd;} &
?
(...)
语法(子shell)是否可以帮助我归档我的目标?
答案 0 :(得分:1)
你的假设是正确的。
{ cmd1 && cmd2; } &
分叉一个新的shell,其中cmd1
运行完成,如果成功,则cmd2
。 (cmd)
启动一个新的子shell,但在继续之前等待该shell完成。 { ...; } &
和( ... ) &
相似;我不记得第二个是否为(...)
和&
中的每一个启动了一个额外的流程,或者它是否可以在后台运行(...)
的新流程。