bash - 使用后台进程退出 shell 脚本

标签 bash shell background-process

我需要以某种方式退出我的 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/

相关文章:

linux:目录中的最新文件,不包括目录和 .文件

macos - 自动打开目录 (mac os x) 和创建 m3u 播放列表的脚本

bash - 按行名连接多个表

linux - 使用自己的 shell 脚本启动器在 linux 中运行多个后台进程

regex - 什么是正则表达式或?

linux - 是否可以抓取 wget 的最后一行?

linux - 在 Linux 的文本文件中用逗号替换空格

shell - 创建一个 bash 文件用于通过 tftp 传输文件

windows-phone-7 - WP7 无效的跨线程访问 - ScheduledTaskAgent

ios - 防止我的应用程序在后台模式下暂停?