我退出后保持linux进程运行

前端之家收集整理的这篇文章主要介绍了我退出后保持linux进程运行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在通过SSH连接到 Linux机器,我正在尝试运行一个重量级的bash脚本来进行文件系统操作.预计它会持续运行数小时,但由于我的互联网连接问题,我不能让SSH会话保持打开状态.

我怀疑使用后台运算符运行脚本,&符号(&)会做的伎俩,因为我尝试了它,后来发现进程没有完成.如何注销并保持进程运行?

解决方法

最好的方法是在终端多路复用器中启动该过程.或者,您可以使过程不接收HUP信号.

A terminal multiplexer提供独立于“真实”终端运行的“虚拟”终端(实际上今天所有终端都是“虚拟”,但这是另一天的另一个主题).即使您的真实终端已使用ssh会话关闭,虚拟终端也将继续运行.

从虚拟终端启动的所有进程将继续与该虚拟终端一起运行.当您重新连接到服务器时,您可以重新连接到虚拟终端,除了通过的时间之外,一切都将好像什么也没发生.

两种流行的终端多路复用器是screentmux.

屏幕有一个陡峭的学习曲线.这是一个很好的教程,图解释了这个概念:http://www.ibm.com/developerworks/aix/library/au-gnu_screen/

当终端关闭时,终端将HUP信号(或SIGHUP)发送到其所有子进程.接收SIGHUP时的常见操作是终止.因此,当您的ssh会话断开连接时,您的所有进程都将终止.为避免这种情况,您可以使您的流程无法获得SIGHUP.

两种简单的方法nohupdisown.

有关nohup和disown如何工作的更多信息,请阅读此问题和答案:https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and

注意:虽然进程将继续运行,但您无法再与它们进行交互,因为它们不再连接到任何终端.此方法主要用于长时间运行的批处理过程,一旦启动,不再需要任何用户输入.

原文链接:/linux/402584.html

猜你在找的Linux相关文章