SSH会话结束后保持进程运行

作者: 感觉被掏空 | 来源:发表于2016-07-02 15:55 被阅读467次

1. 在Linux/Unix中,有这样几个概念


进程组(process group):

      一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。

会话期(session):

      一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。

2. POSIX.1 定义


1. 挂断信号(SIGHUP)默认的动作是终止程序。

2. 当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。

3. 如果会话期首进程终止,则该信号发送到该会话期前台进程组。

4. 一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。

5. 因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。

3. 解决方式


      如果我们可以忽略SIGHUP信号,关掉窗口应该就不会影响程序的运行了。nohup命令可以达到这个目的,如果程序的标准输出/标准错误是终端,nohup默认将其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信号,还需要使用标记&把它放在后台运行。

nohup [argument…] &

相关文章

  • SSH会话结束后保持进程运行

    1. 在Linux/Unix中,有这样几个概念 进程组(process group): 一个或多个进程的集合...

  • 解决ssh会话结束后后进程关闭

    好多帖子介绍了使用nohup运行命令,但关闭ssh客户端后,进程仍然退出了。正确操作是: exit <回车> 即e...

  • Screen

    在ssh远程登陆Linux时,所有的用户进程会在会话被关闭后kill。所以需要常驻后台的程序需要进程守护。nohu...

  • tensorflow中Session和Variable

    Session: #session 会话拥有TensorFlow程序运行的所有资源,当所有程序运行结束后需要关闭会...

  • BS平台部署手册

    Xshell登录Centos 运行软件Xshell 新建会话,通过ssh登录服务器 确定后弹出响应对话框,输入用户...

  • 启动ssh-agent

    方式一:创建子shell,在子shell中运行ssh-agent进程,退出子shell自动结束代理。 方式二:单独...

  • Tmux实现ssh会话保持

    1.安装 2.使用 2.1创建会话 2.2分离/离开会话 2.3查看会话列表 或者使用 2.4进入/接入会话 2....

  • Android 的 screen 命令和进程守护

    minio 进程启动后,如果这时候关闭了终端窗口或者SSH,其进程也会被结束。那么怎么办呢?对于 Linux 也许...

  • 4-3 Linux中的会话和作业(1、后台运行 & 和 查看后台

    一、会话和作业的概念: 1、进程:Linux自身运行的独立程序。 2、进程组:进程组是一个或多个进程的集合。 __...

  • Python多进程

    守护进程 守护进程其实就是“子进程“是否伴随主进程一起结束:守护==>伴随,即守护进程会伴随主进程的代码运行完毕后...

网友评论

    本文标题:SSH会话结束后保持进程运行

    本文链接:https://www.haomeiwen.com/subject/tmuqjttx.html