用screen管理你的linux会话,永不退出

 

 

下面的测试:
基于在第一个SSH窗口上执行了top程序,程序挂在那里,间隔刷新
然后在第二个SSH窗口上执行了以下的操作,查看一下进程本身的父子逻辑。
[@Nova.imdba.cn ~]# ps -ef |grep top |grep -v grep
root     17306 17236  0 19:28 pts/2    00:00:00 top
[@Nova.imdba.cn ~]#
[@Nova.imdba.cn ~]# pstree -H 17306 |grep top
|      `-sshd—bash—top
[@Nova.imdba.cn ~]#
[@Nova.imdba.cn ~]# ps -xj |grep 17236
17234 17236 17236 17236 pts/2    17306 Ss       0   0:00 -bash
17236 17306 17306 17236 pts/2    17306 S+       0   0:00 top
16885 18084 18083 16885 pts/1    18083 R+       0   0:00 grep 17236

为什么要这么看呢,又有什么用呢?
你考虑过,当你关闭了第一个SSH后,top进程是不是就消失了?
因为通知了挂断信号,然而恰恰是挂断信号(SIGHUP)默认的动作是终止程序。

那有个问题,如果我重要的操作,恢复数据库的时候,突然putty,CRT,等一堆终端都断开了,你完蛋了,因为数据会终止操作,因为你没放到后台,只是一个session而已,。。。

这个时候用一下这个命令吧?screen
简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建 多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。在screen中创建一个新的窗口有这样几种方 式:
在第一个SSH窗口输入如下操作:
[@Nova.imdba.cn ~]# screen top
在第二个SSH窗口输入如下操作:
[@Nova.imdba.cn ~]# ps -ef |grep top
root     18593 18544  0 19:59 pts/1    00:00:00 screen top
root     18594 18593  0 19:59 ?        00:00:00 SCREEN top
root     18595 18594  0 19:59 pts/3    00:00:00 top
root     18598 17236  0 19:59 pts/2    00:00:00 grep top
[@Nova.imdba.cn ~]#
[@Nova.imdba.cn ~]# ps -ef |grep top |grep -v grep
root     18593 18544  0 19:59 pts/1    00:00:00 screen top
root     18594 18593  0 19:59 ?        00:00:00 SCREEN top
root     18595 18594  0 19:59 pts/3    00:00:00 top
[@Nova.imdba.cn ~]#
[@Nova.imdba.cn ~]# pstree -H 18593 |grep top
|      `-sshd—bash—screen—screen—top
[@Nova.imdba.cn ~]#

看看是不是top基于了screen而运行,这样如果没有输入exit,没有给screen终止信号,它是不会推出的,所有的操作都在screen里面运行,这样的话,即使你关了第一个SSH窗口也无所谓啦?
但是你关了后怎么恢复呢?
下面的操作,是我把第一个窗口关闭后,再次检查的逻辑关系
[@Nova.imdba.cn ~]# pstree -H 18593 |grep top
|-screen—top
[@Nova.imdba.cn ~]#
[@Nova.imdba.cn ~]# screen -ls
There are screens on:
19091.pts-2.54  (Attached)
18594.pts-1.54  (Detached)
2 Sockets in /tmp/screens/S-root.
[@Nova.imdba.cn ~]# screen -r 18594

这个时候一看,哈哈,top又恢复了,不是很爽吗?

但是screen功能很强大的,需要怎么来维护呢?
[@Nova.imdba.cn ~]# kill -9 19091.pts-2.54    [杀掉会话]
[@Nova.imdba.cn ~]#screen -ls         [列表screen]
[@Nova.imdba.cn ~]#screen -wipe         [清空screen中的job]

-d –m 选项也很有帮助。它会启动一个开始执行的时候就处于断开模式的会话。你可以在随后需要的时候连接上该会话。有时候这是一个很有用的功能,比如我们可以使用一下top命令。
该选项一个更常用的搭配是:-dmS sessionname
启动一个初始状态断开的screen会话:
[@Nova.imdba.cn ~]# screen -dmS mytop top
拯救会话:
[@Nova.imdba.cn ~]# screen -r mytop

看到这里了,应该很明白了,不明白的就参考man screen吧。

http://www.imdba.cn/2009/09/03/linux-screen-session/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值