终端多窗口管理神


------tmux byobu screen terminator谁与争锋之screen篇

#########################################################
###################
GNUscreen命令详解
###################
#######
引
#######
元凶:SIGHUP 信号
让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。

在Linux/Unix中,有这样几个概念:
* 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
* 会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
* 会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
根据POSIX.1定义:
* 挂断信号(SIGHUP)默认的动作是终止程序。
* 当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。
* 如果会话期首进程终止,则该信号发送到该会话期前台进程组。
* 一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。
此段引自前辈:田 强 (tianq@cn.ibm.com), 软件工程师, IBM中国软件开发中心 2007 年 7 月 31 日

#######
安
#######
sudo yum install screen
sudo yum --disablerepo=\* --enablerepo=c6-media install screen
#本地ISO yum源安装
sudo apt-get install screen
#########
语
#########
screen [-AmRvx -ls -wipe][-d ][-h ][-r ][-s ][-S ]

补充说明:
screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。
参 数:
-4
-6
-a
-A
-c file
-d|-D [pid.tty.host] 将指定的screen会话暂时中断,可通过screen -r来恢复。
-dmS name
-D
-e xy
-h lines
-f
-i
-l
-list或-ls
-L
-m
-O
-p window
-q
-r sessionowner/ [pid.tty.host]
-R
-s shell
-S sessionname

-t title
-T term
-U
-v
-wipe
-x
-X
##############
常用参数举例:
##############
screen -S hello
screen -ls
screen -r hello
screen -d hello
screen -d -r hello
##################
screen键绑定(默认)
##################
#screen的默认控制符,所有的快捷键都由^A开始
Commandkey:
#帮助及退出相关window
C-a ?
C-a C-\
C-a k|C-k
C-a X
C-a Q
#命令行模式
C-a :

如:
C-a :screen
C-a :resize
C-a :quit
#新建和切换window
C-a c|C-c
C-a h|p|C-p
C-a space|n|C-n
C-a ’
C-a "
C-a [0-9]
C-a -
C-a C-a
C-a A
#分割窗口及切换
C-a S
C-a tab

C-a F
#中断session
C-a d|C-d
C-a D
#显示相关信息
C-a ,
C-a v
C-a i|C-i
C-a N
C-a m|C-m
C-a t|C-t
C-a w|C-w
C-a *
#关闭或开启标准输出
C-a q|C-q
C-a s|C-s
#功能设置相关
C-a r|C-r
C-a C-v
C-a W
C-a f|C-f
C-a C-g
#清屏,锁屏,挂起
C-a x|C-x
C-a z|C-z
C-a C
C-a l|C-l
C-a Z
C-a {|}
#复制粘贴模式相关
C-a [|C-[|esc
C-a esc|]
C-a =
C-a <
C-a >
#monitor功能
C-a _
C-a M
#login相关
C-a I
C-a O
C-a L
#写入文件相关
C-a h
C-a H
C-a .
###################################################################
#########
常见用法:
#########
*******
启动:
*******
*************
分割窗口
*************
C-a +
C-a -
C-a F
****************
转义控制符
****************
**************
Copy模式
**************
C-a [
C-b
C-f
C-d
C-u
H Head
M Middle
L Last
gg 整个缓冲区的第一行
ng 整个缓冲区的第几行,n为行数,如:第3行则为,3g
G
0
$
w
e
b
W
E
B
注:copy模式的更多的快捷键请自行参考vi
*********************
多session实例:
*********************
7153 ?
7391 pts/8
7392 ?
7615 pts/1
liujun@ubuntu:~$screen -ls
There are screens on:
3 Sockets in /var/run/screen/S-liujun.
****************
重命名窗口
****************
1$ bash
C-a A(大写A)可以轻松地(根据自己的喜好或window功能)进行重命名。如:我常用这几个,哈,什么意缊这里就不多作阐释了,自己心里有数就行!呵呵,
1*$ ubuntu
*********************
指定session名
*********************
screen -S ubuntu
screen -dmS ubuntu
*******************
管理远程会话
*******************
****************************
同步显示与操作功能
****************************
方法:
a.双方同时登陆linux主机
b.一方(演示方)运行:
screen -S test
c.一方(观看方)运行:
screen -x test
**********************
强大的可定制性
**********************
startup_message off
escape ^Tt
defscrollback 1024
vbell on|off
vbell_msg "Wuff--Wuff!"
bind w windowlist
defflow on
hardstatus off
hardstatus string "%h%? users: %u%?"
hardstatus onhardstatus alwayslastlinehardstatus
hardstatus lastline "%-Lw%{= BW}P>%n%f* %t%{-}%+Lw%<"
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
*************
参考资料
*************