我有以下情况:
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
。