Think before you speak, read before you think.

linux工具之Screen/byobu

by

in

安装screen

#apt-get install screen

安装byobu

#apt-get install byobu

接下来主要讲screen Detached表示会话处于挂起状态,Attached表示有终端在连接会话,Dead状态为死掉状态 清理screen的Dead会话,可以查看到此会话的进程号,然后kill -9,之后再screen -wipe

[detached from 10054.pts-0.www]
jpuyy@www:~$ kill -9 10054
jpuyy@www:~$ screen -ls
There is a screen on:
 10054.pts-0.www (2012年03月03日 21时09分03秒) (Dead ???)
Remove dead screens with 'screen -wipe'.
1 Socket in /var/run/screen/S-jpuyy.
jpuyy@www:~$ screen -wipe
There is a screen on:
 10054.pts-0.www (2012年03月03日 21时09分04秒) (Removed)
1 socket wiped out.
No Sockets found in /var/run/screen/S-jpuyy.

screen 新建screen并登陆到其中 screen -t win 创建一个以win作为默认窗口标题的screen并登陆到其中 screen -list 列出screen列表 screen -wipe 清理僵死的screen窗口 screen -r [pid] 连接到当前无用户在连接的对应pid的screen,pid可以通过screen -list获得 screen -x [pid] 连接到对应pid的screen,不论当前有无用户已连接其中 screen窗口内部常用命令: 先按CTRL+a,然后松开再按下面的键: c 创建新的screen窗口并切换到其中 K 杀死当前screen窗口 ” 列出当前screen窗口列表 ‘ 输入screen窗口号码或名称的提示符 0 选择0号窗口 … 9 选择9号窗口 A 设置当前screen窗口的标题 d 断开与当前scree终端的连接 DD 断开与当前screen终端的连接并注销 –added in 20121204 用无线连接时,正在使用screen,突然网断了,然后重新连到服务器上

root@ibm:~# screen -r
There is a screen on:
 24643.pts-0.ibm (11/27/2012 07:50:06 PM) (Attached)
There is no screen to be resumed.

发现不能回到原来的screen,从网上查得使用如下命令,踢掉上次中断的用户,并接管screen:

screen -D -r <session-id>

如上面的例子就是 :

screen -D -r 24643

使用node js版的shadowsocks时,会自动挂掉,所以把它放到screen中,用crontab每45分钟重开启一下

*/45 * * * * /usr/bin/killall screen; /usr/bin/screen -dmS node /usr/local/bin/node /usr/local/shadowsocks-nodejs/server.js

参考文章: http://www.ibm.com/developerworks/cn/linux/l-cn-screen/

使用screen翻屏

Ctrl+A, Esc 进入 C/P 模式,然后用Page Up/Down 翻页
还能用?<string> 查找

使用screen的时候,通用配置文件在/etc/screenrc,可以新建~/.screenrc从而使用定制化的screen配置。 add @2014-05-15 启动screen的时候,直接连接多个ssh,用tab区分

screen -dmS sshmulti -c sshmulti.conf

原理是将ssh的命令和名称写到sshmulti.conf,启动时指定配置文件,配置文件如下

escape ^Xx
autodetach      on      # default: on
crlf         off      # default: off
hardcopy_append   on      # default: off
startup_message   off      # default: on
termcap  xterm   'AF=\E[3%dm:AB=\E[4%dm'
terminfo xterm   'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
vbell         off      # default: ???
defscrollback      1000      # default: 100
silencewait      15      # default: 30

caption always "%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw%? %= %{= kw}%110`%109`%111`"
hardstatus string '%99`%{= kw} %100`%112`%= %102`%101`%114`%115`%108`%113`%119`%117`%118`%116`%106`%104`%103`%105`%107`%Y-%m-%d %0c:%s'

activity      "activity in %n (%t) [%w:%s]~"
bell         "bell     in %n (%t) [%w:%s]~"
pow_detach_msg   "BYE"
vbell_msg      " *beep* "

screen -t server88 ssh 192.168.1.88
screen -t server99 ssh 192.168.1.99

参考:http://askubuntu.com/questions/49245/start-multiple-apps-running-in-shells-split-in-one-console

有时在 screen 里会要看很长的历史,则需要把 buffer 加大,要看的时候按 ctrl-a 再按 {,再按 u 上翻, d 下翻

对 session 重命名

screen  -list
There are screens on:
        2580.pts-0.centos7-work (Detached)
        2478.pts-0.centos7-work (Detached)
2 Sockets in /var/run/screen/S-vagrant.
# 重命名 -S 当前名 -X sessionname 要修改的名字
screen -S 2580.pts-0.centos7-work -X sessionname backend-service

创建新的 tab

press Ctrl+A+c to create a new virtual console

切换

press Ctrl+A+n to switch to next tab
press Ctrl+A+p to switch to previous tab

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *