【发布时间】:2016-03-24 15:34:19
【问题描述】:
对不起,菜鸟问题。我在我的网络服务器上运行一个 shell 脚本来下载 900 个左右的文件。但是,我通过笔记本电脑上的终端外壳执行此操作,并且我即将失去当前的 Internet 连接。
服务器上的脚本是否会继续运行直到完成?还是它停止了,因为它不再向我断开连接的笔记本电脑上的终端提供反馈。
【问题讨论】:
标签: linux bash shell unix terminal
对不起,菜鸟问题。我在我的网络服务器上运行一个 shell 脚本来下载 900 个左右的文件。但是,我通过笔记本电脑上的终端外壳执行此操作,并且我即将失去当前的 Internet 连接。
服务器上的脚本是否会继续运行直到完成?还是它停止了,因为它不再向我断开连接的笔记本电脑上的终端提供反馈。
【问题讨论】:
标签: linux bash shell unix terminal
默认情况下,Web 服务器上的交互式 shell 将在脚本终止后立即向您的脚本发送 HUP 信号。你可以通过这样调用你的脚本来防止这种情况发生:
<scriptname> & disown
这样它将在后台运行 (&) 并从 shell 的作业列表 (disown) 中删除,因此 shell 不会向其发送 HUP 信号。
请注意,disown 可能不是必需的 in some cases。
【讨论】:
它会随着父进程(终端)死亡而死亡。但是,使用诸如screen 或nohup (以及其他)之类的实用程序,即使终端死机,也可以让进程继续运行,您甚至可以后台进程并在它已经运行后取消它,see this Q for more there.
Further reading you may want to peruse, there's a ton out there on this subject.
【讨论】: