一次做实验,在编译安装源码包,突然网络断开了,SSH就断开了,才知道命令也就此中断,白忙活了一场,后来才Linux下的会话进程是这样管理的,所有的会话进程都有一个最终的首进程,与当前终端交互的进程称为前台进程组,其余都是后台进程组,当交互终端检测到网络连接断开时,会将挂断信号发送给控制进程,也就是首进程,如果会话期首进程终止,则该信号发送到该会话的前台进程组中,此时前台进程会退出,就会导致一个孤儿进程产生,如果任意一个孤儿进程组处理STOP状态,则会发送挂断信号(挂断信号默认动作就是终止程序)到该进程组中所有进程,从而断开连接,命令也会终止,那么我们要想会话断开而命令不受影响可以使用screen工具来防止这个情况。 在CentOS下,可以使用yum来直接安装Screen yum install screen FreeBSD下可以使用 sudo pkg_add -r -v screen 安装完成后可以直接使用screen相关命令操作 1)screen -ls //列出当前有哪些Screen在运行 2)screen -S name //以name命名的会话 3)screen -r name/ID //回到名称为name的会话 4)screen -d -r //可以把一个正在运行的会话抢过来 [root@test ~]# screen -ls There are screens on: 30886.test1 (Attached) //会话ID和会话名称 3876.chenkui (Attached) 3842.pts-0.test (Attached) 3 Sockets in /var/run/screen/S-root. [root@test ~] (责任编辑:IT) |