转自:
和我能够使用如下的方法开始一个叫做“radiostation”的screen对话:
tmancill@ghostrider:~$ screen -S radiostation
(此时出现一个空白的screen)
tmancill@ghostrider:~$ mp3blaster
(载入我的播放列表,然后按下play开始发射)
(按下“CTRL-a”,然后按下“d”离开)
默认会启动一个screen进程,读取/etc/scrennrc配置文件,~/.screenrc配置文件(如果有的话)
3.screen后面可以带的参数:
-c file: override默认的配置文件$HOME/.screenrc
-d [pid.tty.host]:断开screen进程(使用该命令时,screen的状态一定要是Attached,也就是说有用户连在screen 里)。一般进程的名字是以pid.tty.host这种形式表示(用screen -list命令可以看出状态)。
-D [pid.tty.host]:与-d命令实现一样的功能,区别就是如果执行成功,会踢掉原来在screen里的用户并让他logout。
-r [pid.]tty.host:连上一个断开的screen进程,如果有多个断开的进程,需要指定[pid.]tty.host,常用命令
-d -r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户再连接。
-D -r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户并让他logout再连接
-ls或者-list:显示存在的screen进程,常用命令
-m:如果在一个Screen进程里,用快捷键crtl+a c或者直接打screen可以创建一个新窗口,screen -m可以新建一个screen进程。
-dm:新建一个screen,并默认是detached模式,也就是建好之后不会连上去。
-p number or name:预先选择一个窗口。
例如:如果现在有一个Screen进程,并且是dettached
4.在screen中的操作:
(C-a c命令指的是按下Crtl+a,然后松开,在按下c)
C-a “:显示Screen里的所有窗口,并可以进行选择。最常用命令
C-a c:创建新窗口,常用命令
C-a num:切换至num号窗口。窗口名一般是0-9(我这个版本最多支持创建40个窗口,C-a “命令就可以看到窗口号,在最左边)
C-a A:为当前窗口设定一个标题,常用命令
C-a d:断开一个screen的进程,常用命令
C-a D D:断开一个screen的进程并且logout
C-a K:删除当前的窗口,常用命令
C-a C-x:锁住终端
C-a C-z:挂起终端,也就是可以用jobs,fg之类的命令管理
C-a Z:重置终端至刚启动时的状态
---------------------------------------------------------------------------------------------------------
======================
screen 是一个特殊的模拟终端软件,利用它能在一个终端窗口里模拟出多个终端,
并且能分割窗口、类似 VI 的方式搜索和拷贝屏幕输出,最重要的是利用
screen,可以让任务后台执行,退出系统,下次登录恢复后跟以前状态一样。
1) 运行
执行 screen 命令就是新开一个 screen 会话,其它常用命令:
列举当前存在的 screen 会话
$ screen -ls
[2]dieken@tsg:~$ screen -ls
There is a screen on:
12212.pts-24.tsg (Detached)
1 Socket in /var/run/screen/S-dieken.
括号中的 Detached 表示这个会话在后台运行,用 screen -R 恢复它。
如果有多个 Detached 的会话,则用 screen -R 12212 恢复它;如果突然
掉线导致那个会话还处于 Attached 状态,则用 screen -dR 12212 恢复。
2) 退出
screen 内会执行 shell,退出所有 shell 后 screen 就退出了,或者
在 screen 里头按 Ctrl-a d 来 detach 这个 screen 会话,以后就能
用 screen -R 恢复这个会话。
3) 帮助:
Ctrl-a ? 或者 man screen
4) 窗口操作:
Ctrl-a c 开新窗口(退出里头的 shell 比如用 exit 或者 ctrl-d 则退出此窗口)
Ctrl-a Ctrl-a 切换窗口
Ctrl-a 0 到 9 直接切换到某个窗口,窗口编号能用 Ctrl-a " 看到,这个命令
会列出所有窗口,按上下方向键或者类似 vi 的 hj,高亮然后回车选择
5) 窗口分割,可以利用这个功能一边编辑一边查看编译结果。
Ctrl-a S 分割窗口
Ctrl-a j 切换到下一个窗口
Ctrl-a k 切换到上一个窗口
Ctrl-a b 切换到最底下的窗口
Ctrl-a t 切换到最顶上的窗口
然后用 4 中的切换操作让新分割出来的窗口显示内容
Ctrl-a X 关闭当前窗口(关闭的只是分割出来的窗口,并不是 4 中新建的窗口)
6) 记录屏幕输出
Ctrl-a H 类似 script 程序,记录屏幕上显示的内容,再按此快捷键停止记录。
7) 回滚、搜索、拷贝屏幕输出
Ctrl-a ESC 或者 Ctrl-a [ 进入回滚、拷贝模式
进去此模式后就可以用 vi 的命令移动光标:h, j, k, l, 0, ^, $, H, M, L,
G, |, w, b, e, B, E, Ctrl-u, Ctrl-d, Ctrl-b, Ctrl-f, g, %
拷贝:在起始点和终点各按一次空格键,这就拷贝了高亮文字并退出回滚、拷贝
模式,进入正常模式,用 Ctrl-a ] 就可以粘贴。
搜索:类似 vi 的 / 和 ? 命令,或者 Emacs 的 C-a s 和 C-r 命令
8) 锁住 screen
Ctrl-a x 需要输入密码才能继续使用
9) 配置,screen 默认用 Ctrl-a 作为快捷键前缀,这跟命令行编辑的 Ctrl-a 跳到
行首冲突,因此可以在 ~/.screenrc 里配置为 Ctrl-j:
defescape ^Jj
escape ^Jj
建议在 ~/.bashrc 中设置 PS1 的后面一行加入
PS1="\\n[\$SHLVL]$PS1"
这句,这样能容易看出当前的 shell 是否嵌套在其它 shell 里运行的。
我的配置文件,从 jetspeed 的抄的,有两行太长了所以加了行号,使用的
时候记得去掉:
1 vbell off
2 defescape ^Jj
3 escape ^Jj
4
5 startup_message off
6
7 # define a bigger scrollback, default is 100 lines, I like large
scrollback
8 defscrollback 2048
9
10 # An alternative hardstatus to display a bar at the bottom listing the
11 # windownames and highlighting the current windowname in blue. (This is
only
12 # enabled if there is no hardstatus setting for your terminal)
13 hardstatus on
14 hardstatus alwayslastline
15 hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d
%C%a "
16
17 # another way to show window list
18 #caption always "%?%F%{-b 4w}%:%{-b bb}%? %H | %l | %m-%d %c |%?%F%{-b
4w}%?%L=%-Lw%45>%{-b w4}%n%f* %t%{-}%+Lw%-0<"
19
20 # key bingdings
21 # remove some stupid/dangerous key bindings
22 bind k
23 bind ^k
24 bind .
25 bind ^\
26 bind \\
27 bind ^h
28 bind h
29 bind l windowlist
30 bindkey ^[, prev
31 bindkey ^[. next
32
33 # some useful keys for resizing
34 bind = resize =
35 bind + resize +1
36 bind - resize -1
37 bind _ resize max
38
39 # bind some keys for moving between split windows
40 bind j focus down
41 bind k focus up
42 bind t focus top
43 bind b focus bottom
44