记得有一次做实验,在编译安装源码包,突然网络断开了,SSH就断开了,才知道命令也就此中断,白忙活了一场,后来才Linux下的会话进程是这样管理的,所有的会话进程都有一个最终的首进程,与当前终端交互的进程称为前台进程组,其余都是后台进程组,当交互终端检测到网络连接断开时,会将挂断信号发送给控制进程,也就是首进程,如果会话期首进程终止,则该信号发送到该会话的前台进程组中,此时前台进程会退出,就会导致一个孤儿进程产生,如果任意一个孤儿进程组处理STOP状态,则会发送挂断信号(挂断信号默认动作就是终止程序)到该进程组中所有进程,从而断开连接,命令也会终止,那么我们要想会话断开而命令不受影响可以使用screen工具来防止这个情况。
- 01.
- 在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 ~]
转载于:https://blog.51cto.com/loveroot/969736