Linux 为什么setsid无法从shell脚本退出?

Linux 为什么setsid无法从shell脚本退出?,linux,bash,shell,setsid,Linux,Bash,Shell,Setsid,“test1.sh”shell脚本不会立即退出 $ cat test1.sh #!/bin/bash setsid sleep 100 “test2.sh”shell脚本将立即退出 $ cat test1.sh #!/bin/bash setsid sleep 100 谁能给我解释一下吗?非常感谢。您的第一个脚本等待setsid sleep 100完成,然后返回(换句话说,它将在睡眠完成后返回,此处为100秒),但第二个脚本不会等待命令完成,因为&将命令置于后台并立即返回。引用manba

“test1.sh”shell脚本不会立即退出

$ cat test1.sh
#!/bin/bash

setsid sleep 100
“test2.sh”shell脚本将立即退出

$ cat test1.sh
#!/bin/bash

setsid sleep 100

谁能给我解释一下吗?非常感谢。

您的第一个脚本等待
setsid sleep 100
完成,然后返回(换句话说,它将在睡眠完成后返回,此处为100秒),但第二个脚本不会等待命令完成,因为
&
将命令置于后台并立即返回。引用manbash:

$ cat test2.sh
#!/bin/bash

setsid sleep 100 &

还要注意,
&
是一个控制运算符,它具有更高的优先级。希望这有帮助

&
将命令置于后台,导致后者退出。请注意,这与
setsid
命令无关。“setsid”将解除进程的监视,因此我希望脚本在“setsid sleep 100”之后继续执行,而不是等待100秒。感谢您的回复。我知道在shell脚本中使用“&”。如果删除了“setsid”,则您的答案非常好。但是这里使用的是“setsid”。你能从“设置ID”的角度给我解释一下吗?