赞
踩
参考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自己的用户名,可以看到对应程序
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。