我需要以某种方式退出我的 script.sh(带有返回代码 - 最好),它在后台运行一些其他命令和其他脚本。
我试过通过
运行命令nohup myInScript.sh &
我也尝试在 script.sh 的末尾使用
disown -a[r]
我也试图杀死它
kill $$
但是脚本只是在最后一个命令之后挂起并且不会退出。 如何在运行命令后强制它退出? 请帮忙。
编辑:更具体地说,我在另一台机器上通过 ssh 远程运行脚本。
最佳答案
如果任何仍在运行的子进程打开了标准(终端)文件句柄,即使它完成,登录 shell 也会保留在内存中。普通(子进程)shell 似乎不受此影响。因此,看看将您的 nohup 行更改为以下内容是否有任何不同。
nohup myInScript.sh >some.log 2>&1 </dev/null &
在 Centos5 上,如果我运行 parent.sh
,我不会遇到问题。但如果我运行 ssh localhost parent.sh
,我就会这样做。在这种情况下,我上面显示的 I/O 重定向解决了问题。
关于bash - 使用后台进程退出 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122780/