远程会话管理神器screen

远程会话管理神器screen

远程会话管理神器screen_第1张图片

为什么要用Screen?

你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连 接,否则这个任务就会被杀掉,一切半途而废了。

什么是Screen?

Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器, Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样

如何使用Screen?

首先通过ssh登录到远程服务器,执行screen创建一个会话

$ screen #创建会话

在这个会话中可以创建多个窗口,ctr+a c(按下ctr+a组合键,再按c)

$ ctr+a c #创建新的窗口

我们可以窗口中执行任意得操纵,执行rake 任务,编辑代码等等,这时候突然来了个电话,或者要开一个紧急会议

我们的任务还没有完成,编码还没有修改,怎么办? 通过ctr+a d,暂停会话

$ ctr+a d #暂停会话

两个小时后回来,通过screen -r恢复会话,发现离开之前的编辑状态还在,任务还在继续运行,perfect!

$ screen -r #恢复会话

另外可以同时screen创建多个会话,然后通过screen -ls查看当前所有会话列表

重新打开指定会话,screen -r <screen_pid>

$ screen -ls #查看会话列表

 

$screen -ls

There are screens on:

465037.pts-6.web1 (Detached)

371059.pts-1.web1 (Detached)

465340.pts-6.web1 (Detached)

screen发送命令使用了特殊的键组合C-a。这是因为我们在键盘上键入的信息是直接发送给当前screen窗口,必须用其他方式向screen窗口管 理器发出命令,默认情况下,screen接收以C-a开始的命令。这种命令形式在screen中叫做键绑定(key binding),C-a叫做命令字符(command character)

 

最好能给每个窗口起一个名字,这样好记些。使用C-a A给窗口起名字。使用C-a w可以看到这些窗口名字

常用快捷键:

C-a ? 显示所有键绑定信息

C-a w 显示所有窗口列表

C-a K 杀掉当前窗口

C-a c 创建一个新的运行shell的窗口

C-a C-a 切换到之前显示的窗口

C-a n 切换到下一个窗口

C-a p 切换到前一个窗口

C-a 0..9切换到窗口0..9

C-a a 发送 C-a到当前窗口

C-a [ 进入拷贝/回滚模式

 

让我们的管理页面更漂亮一点,在~/.screenrc下添加如下脚本:

vim ~/.screenrc

hardstatus on

hardstatus alwayslastline

hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "

startup_message off

termcapinfo xterm* ti@:te@

远程会话管理神器screen_第2张图片

 

你可能感兴趣的:(screen,远程管理)