我遇到过一个正在运行的脚本(myDir/myScript.sh arg1 arg2 &)
根据我的理解,它在子 shell 中以及该子 shell 的后台运行脚本。
myDir/myScript.sh arg1 arg2 &如果我运行不带括号的脚本来创建新的子 shell,会产生任何副作用吗?
在子 shell 中运行它的通常原因是,当后台进程启动和完成时,shell 不会打印消息。
另外,如果脚本使用过该wait命令,它不会等待在子 shell 中启动的后台进程(进程只能等待自己的子进程,而不能等待孙进程)。
这也意味着如果脚本在子 shell 中启动,则脚本无法获取后台进程的退出状态 - 您需要使用wait来获取它。并且该$!变量不会被设置为后台进程的PID(它是在子shell中设置的,而不是原始shell进程中设置的)。
基本上,(command&)如果原始 shell 不需要处理后台进程,它只是想启动它并忘记它,那么您可以使用它。
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |