服务器端使用Screen

时间:2022-09-05 12:07:18

服务器端使用Screen提高工作效率

如果你在linux服务器端工作,没有听说过Screen或tmux那简直弱爆了。有时间自己可以多了解一些。

简单介绍下Screen:

Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。
Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。
Screen可以保持shell的会话状态,也就意味着,在那个shell会话中的诸如:ssh连接,文件编辑,程序运行等等状态都是可以恢复的,所以每天上班不用繁琐地一个个打开工作环境,且在断网情况下也不用担心有任何影响。

下面简单介绍下screen的配置和使用。

1)配置方法
在自己的home目录下建一个名为 .screenrc 的screen配置文件。
下面贴一下我的配置,仅供参考:

#取消screen的快捷键C-s
defflow off

#将Ctrl-a替换为Ctrl-z, 默认Ctrl-A是screen的命令模式
escape ^Zz

#关了闪屏
vbell off

#编码的配置
 

defutf8 on

defencoding utf8

encoding UTF-8 UTF-8

这样能避免中文乱码的问题 #defencoding GBK #encoding UTF-8 GBK #defencoding UTF-8 #encoding GBK UTF-8 #定制自己需要的显示信息 #altscreen on #caption always "%{= wk} %{= KY} [%n]%t @ %H %{-} %= %{-} %{= KG} ${USER} %{-} @v@ %{-} | %{= KG} %Y-%m-%d %{-}" hardstatus alwayslastline hardstatus string "%{= kG}[%{G}%H%{= r}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d%{W} %c:%s%{g}]" #快捷键,(note: K1表示F1,k;是F10) #bindkey -k k1 select 1 #F1 to select 1 bindkey -k k2 screen #F2 to new a screen bindkey -k k9 detach #F9 to detach #bindkey -k k; detach #F10 to detach bindkey -k k3 prev #F3 to previous bindkey -k k4 next #F4 to next bindkey -k k7 kill #F7 to kill current window bindkey -k k8 title #F8 to rename a window bindkey -k F1 quit #F11 to Kill all windows and terminate screen bindkey -k F2 help #F12 to Show key bindings

2)使用方法:
初次使用,使用 screen -S <标识名> 来新建一个screen会话,之后可以通过如上快捷键操作,比如F2新建窗口,F3,F4切换
一但开启了screen,你不再需要担心网络状态,比如现在可以直接关掉远程连接,所有的会话由screen继续保持运行。

重新恢复screen会话,建议使用: screen -rd <之前已建立的标识名>

另外,可以通过我上述配置的F9快捷键,从screen会话中快速detach出来。

不需要的screen窗口,可以直接在shell里exit出来

3)常用技巧:

--NOTE: 标准命令是C-a, 我在上述配置中将其改为C-z了,所以下面使用C-z来描述。

a) C-z [ 进入screen copy mode, 可以方便地向上滚屏查看需要的内容,此时自动进入vi模式,可以使用vi的移动及查找等等功能;
b) C-z : 命令模式,比如我这时可以输入encoding utf8 utf8 来改变当前screen的显示编码,当前这些可以通过配置文件来控制;
c) C-z k kill current window, 当一个窗口进入一些假死状态无法exit时,可以使用screen的这个命令强行杀死;
d) C-z c 创建一个新的运行shell的窗口并切换到该窗口(是的,就是我上面配置里绑定的F2);
e) C-z n 切换到下一个窗口(对应我的F4,除了n还可以使用:^@ ^N sp这三个),当然n可以替换具体数字0,1,2,3等从而直接进入指定窗口,类似其他不再赘述了,直接man screen查看help吧;
f) C-z A 窗口重命名(已被我绑定到F8),合理使用这个功能,给每个窗口起有意义的名字方便快速定位;
g) C-z ? 显示出所有的绑定,OK,所有的东西都在这里了。关键是多动手尝试 :-)

4)其他
有时我们需要临时登录到服务器上测试运行一个程序,或在服务器上临时编辑一个重要文件,但担心操作过程中会断网。这时,可以在命令前加个screen来临时创建一个screen会话。
比如:

screen ./run
screen vim conf.txt