通过SSH操作时如何保证终端断开时任务继续执行

参考https://blog.csdn.net/longshenlmj/article/details/43309995

https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html

原理如下:

在Linux/Unix中,有这样几个概念:
进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
根据POSIX.1定义:
挂断信号(SIGHUP)默认的动作是终止程序。
当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。
如果会话期首进程终止,则该信号发送到该会话期前台进程组。
一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。
因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
————————————————
版权声明:本文为CSDN博主「longshenlmj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/longshenlmj/article/details/43309995

如何让终端断开时任务继续执行:

nohup,

对已经运行中的任务,通过disown来设置

如何查看后台执行中的任务:

程序运行后用

ps -ef  | grep '进行id'

或者ps -aux 来查看后来多少进行正在运行,grep自己的用户名,可以看到对应程序

发布了90 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_32425195/article/details/103777792