• 如何实现SSH断开后 进程仍然在后台运行


    对于linux运维,我们都是使用ssh登录到服务器,如果我们运行的任务需要很长时间或不间断运行,在我们直接关闭终端窗口或网络不稳定的情况下,任务就会中断,当然这只对于普通程序,不包括如mysqld,httpd这样的守护进程。

    解决思路:
    1.让进程运行在新的session(会话)里即不属于此终端的子进程。
    2.可以实现让进程忽略HUP信号
    解决方法:
    1.nohup命令
    功能:不挂断地运行命令,忽略HUP信号。
    语法:nohup command &

    2.screen命令

    此命令非常强大。如果非常多的命令都需要忽略HUP命令,screen可以解决这一问题。screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。

    用screen -dmS session name 来建立一个处于断开模式下的会话(并指定其会话名)。
    用screen -list 来列出所有会话。
    用screen -r session name 来重新连接指定会话。
    用快捷键CTRL-a d 来暂时断开当前会话。
    我的CentOS6.0上没有screen命令,不过可以使用yum安装。
    [root@DigMouse ~]# yum list screen
    Available Packages
    screen.i686                         4.0.3-15.el6                         base
    [root@DigMouse ~]# yum install screen*
    复制代码
    Ok,系统有了screen命令了。
    [root@DigMouse ~]# screen -r DigMouse
    [root@DigMouse ~]# ping 51osos.com > /dev/null &
    [1] 13789
    [root@DigMouse ~]# pstree -H 13789
    复制代码
    此时 bash 是 screen 的子进程,而 screen 是 init(PID为1)的子进程。那么当 ssh 断开连接时,HUP 信号自然不会影响到 screen 下面的子进程了。

    Ref:

    https://blog.csdn.net/fightforyourdream/article/details/19159053

    https://blog.csdn.net/v1v1wang/article/details/6855552

    https://blog.csdn.net/wind19/article/details/4986458

  • 相关阅读:
    我的省选 Day -9
    我的省选 Day -10
    我的省选 Day -11
    我的省选 Day -12
    我的省选 Day -13
    [NOI2013]快餐店
    我的省选 Day -14
    杭电多校2020第7场-E Expectation
    「联合省选2020」组合数问题
    UR#19 通用评测号
  • 原文地址:https://www.cnblogs.com/andy-0212/p/10832354.html
Copyright © 2020-2023  润新知