我需要以某种方式退出我的script.sh(返回代码 - 将是最好的),它在后台运行一些其他命令和其他脚本。
我试图通过
运行命令nohup myInScript.sh &
我也尝试在script.sh
的末尾使用disown -a[r]
而且我也试过杀了它
kill $$
但脚本只是在最后一个命令后挂起,不会退出。 如何在运行命令后强制退出? 请帮忙。
编辑:更具体地说,我是通过另一台机器上的ssh远程运行脚本。
答案 0 :(得分:12)
从内存中,如果登录shell完成任何仍在运行的子节点的标准(终端)文件句柄打开,它将被保留。普通(子过程)shell似乎没有受此影响。因此,请查看将nohup行更改为以下内容是否有所不同。
nohup myInScript.sh >some.log 2>&1 </dev/null &
在Centos5上,如果我运行parent.sh
,我就不会遇到问题。但是,如果我运行ssh localhost parent.sh
,我会这样做。在这种情况下,我在上面显示的I / O重定向解决了这个问题。
答案 1 :(得分:3)
上述解决方案大部分时间都有效:
nohup myInScript.sh >some.log 2>&1 </dev/null &
但我有一个案例没有,不知道为什么。无论如何, at 命令完成了这个技巧,甚至看起来更优雅:
at now -f my_script.sh