让我们再试着模拟刚才的场景,不过我们这次可是使用的“screen”这把利器。
在远端服务器上使用w、pstree等工具查看,比较一下和刚才看到的结果有什么不一样
现在再把ssh会话窗口关闭,看看这次和上次关闭有什么不同,好像并没有什么不同,其实大不然,让我们在远端服务器上使用w、pstree等工具查看,发现虽然远程会话关闭了,但开启的进程并不有结束
可是问题又来了,怎么恢复刚才的会话呢?让我们重新使用ssh连接上远程服务器后,使用screen –ls 命令列出当前有哪些screen会话在运行
是不是看到一个会话,其会话ID为3527,这就好办了,使用screen –r 3527 重新建立起刚才中断的会话
是不是刚才的会话又“重现”了,是不是很神奇!想一想这对于我们的开发人员、运维工程师来讲绝对是一大福音。
四、进阶使用
(1)[root@lamp ~]# screen -S editsample #启动一个名称为editsample的会话
备注:可以开启多个screen会话
[root@lamp ~]# screen -ls
There is a screen on:
3917.edit (Attached)
1 Socket in /var/run/screen/S-root.
然后你就可以在刚才打开的会话中执行你要的任务了,这样即使连接被中断,也不会造成任务中断,多么好啊!
(2)把一个正在运行的会话“抢”过来
[root@lamp ~]# screen -d –r #screen –d -x也可以达到类似的效果
我现在使用screen开启了一个editsample的会话,并运行了vi /etc/passwd这个进程
接下来我在另一个ssh终端窗口操作
当我执行screen –d -r命令后,发现会话已经到我这边了,这个命令对于作为运维工程师到处“流窜”的我们特别有用
(3)会话的扩展
【ctrl+A C】在一个screen会话中创建一个新的窗口,相当于创建一个新的shell
提示:先按ctrl+A组合键,再按C键
【ctrl+A 】在窗口间进行切换
【ctrl+A N】切换到下一个窗口
【ctrl+A P】切换到上一个窗口
【ctrl+A 0…9】切换到指定编号的窗口
【ctrl+A W】显示所有窗口列表
可以看到当前screen会话有3个会话窗口,编号分别为0、1、2,当前活动窗口的编号为2
【ctrl+A D】退出screen会话,可以通过screen -r恢复会话
五、与 nohup比较
nohup可以临时救急,但是当我们要运行多个后台这样的命令并且不因网络连接断开而中断时,screen无疑是更好的解决方法
六、总结
screen在实际应用中确实较为常用,是运维管理人员必学工具之一!