Shell脚本-子进程-后台进程

Shell脚本-子进程-后台进程

我有以下情况:

rootScript_A.sh在服务器上运行并休眠直至触发。触发时,它会调用Script_B.sh,该函数在服务器上循环以确定需要执行哪些操作。一旦生成了操作列表,它将Script_C.sh作为流程所有者 ( su - $sUser -c "/path/to/correct/script.sh") 提交。

我的问题:有没有办法su - $sUser -c "/path/to/correct/script.sh"在后台运行?我不想按顺序运行第三个脚本。

答案1

&像往常一样放在最后对我来说效果很好:

su - "$sUser" -c "/path/to/script.sh" &

如果这对您不起作用,您需要编辑您的问题以包含有关您的问题的更多详细信息。

答案2

在命令后面附加&是在后台运行命令的方法。所以:

su - $sUser -c "/path/to/correct/script.sh" &

或者,如果您想确保脚本不会收到来自脚本 B 的 SIGHUP(挂断信号),请使用disown

su - $sUser -c "/path/to/correct/script.sh" & disown

我不能 100% 确定这会产生您需要的确切效果,因为使用su.该nohup命令对于这种类型的努力也很有用,因为它会停止向终端输出任何内容,但这取决于您的具体情况。

这个答案&对、disown和 的使用有更多说明nohup

相关内容