linux screen 命令详解
2013-12-31 16:28
591 查看
功能说明:
使用telnet或SSH远程登录linux时,如果连接非正常中断(远程机器关闭),重新连接时,系统将开一个新的session,无法恢复原来的session.screen命令可以解决这个问题。Screen工具是一个终端多路转接器,在本质上,这意味着你能够使用一个单一的终端窗口运行多终端的应用。语 法:
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
补充说明:
screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。
我的用法:
1,开启一个screen并进入:screen -S test1 #这里用-S表示给screen起名字,以后切换的时候比较方便。这时就进去了screen test1了。里面可以跑一些程序。
2,退出该screen:
Ctrl-a d #这里的ctrl-a表示同时按ctrl键和a键,然后再单独按d键。这时退到跟终端。
3,在根下查看开启的所有screen:
screen -ls # 比如会有25764.test1 (Detached)等。
4,在根下进入某个screen:
screen -r test1 #这时又进入到指定的screen session中,或者screen -r 25764。
5,关闭该session:
exit #在该screen中退出,退到根下。
6,强制连接,踢掉原来的
screen -D -r 20791
screen -x -r 20791(共享原来的)
7,当前窗口假死,强制关闭当前窗口,跳到下一个
Ctrl-a K
8,上翻
Ctrl-a Ctrl-[
语 法:
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s][-S <作业名称>]
补充说明:
screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。
参 数:
-A 将所有的视窗都调整为目前终端机的大小。-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
常用screen参数:
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。C-a ? -> Help,显示简单说明
C-a c ->
Create,开启新的 window
C-a n ->
Next,切换到下个 window
C-a p ->
Previous,前一个 window
C-a 0..9->
切换到第 0..9 个window
Ctrl+a [Space] ->
由視窗0循序換到視窗9
C-a C-a ->
在两个最近使用的 window 间切换
C-a x ->
锁住当前的 window,需用用户密码解锁
C-a d ->
detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里 每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z ->
把当前session放到后台执行,用 shell 的 fg 命令則可回去。
C-a w ->
Windows,列出已开启的 windows 有那些
C-a t ->
Time,显示当前时间,和系统的 load
C-a K ->
kill window,强行关闭当前的 window
C-a [ ->
进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
C-a : ->输入命令(quit/split等):
除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。
--End--
~/.screenrc的配置
[python] view
plaincopy
# ~/.screenrc
#
# 用系统的一些设置
shell -$SHELL
# 避免类似进入vi退出后屏幕刷新不完
altscreen on
#
# 启动时不显示欢迎屏幕
startup_message off
#
# hangup时自动detach
autodetach on
#
# 一个screen die,不冻结整个screen
nonblock on
#
# UTF-8 is necessary.
defutf8 on
#
# Change default scrollback value for new windows: scrollback 10000
defscrollback 10000
#
# start with visual bell as default
vbell off
vbell_msg "Bell on %t (%n)"
#
# 在最下一行显示窗口列表和时钟
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rY}%n %t%{-}%+w %=%{..G} %H(%l) %{..Y} %Y/%m/%d %c:%s "
#
# default windows
screen -t shell 0
screen -t vim 1
#
# 按 Ctrl-Z w 或 Ctrl-Z Ctrl-W 显示窗口列表
bind w windowlist -b
bind ^w windowlist -b
#
# 定义screen的功能键为Ctrl-Z。向终端输入Ctrl-Z时应按 Ctrl-Z z。默认是Ctrl-a
#escape ^Zz
【注】:
问题:
在使用screen的时候,相信不少同学碰到过这样的问题:使用screen启动一个新窗口之后,之前shell配置文件(比如:~/.bashrc)里定义的变量和alias全部失效。自己不得不使用“. ~/bashrc”又重新加载一遍配置,就这样,启动一个窗口,手动加载一次,非常繁琐麻烦。
解决方案:
在screen的配置文件.screenrc里增加配置项
shell -$SHELL
这句话的意思是:screen启动窗口后,自动加载当前shell的配置文件(比如:~/.bashrc),当然SHELL变量已经是定义好的
问题:
linux中显示中文OK:
echo $LANG
en_US.UTF-8
但是screen中不能正确显示中文,
解决方法:
设置~/.screenrc
defencoding gbk
encoding gbk gbk
遇到一个问题,每次一关闭SecureCRT screen中的字体设置就有问题,需要重新关闭screen,再开启。【未解决】
相关文章推荐
- 学习python中的一些问题--centos下django连接mysql配置
- 块设备驱动3--sd卡驱动2(linux-3.2.36的host.h分析)
- Linux C编程——more命令的实现
- linux之线程
- linux 与 windows 文件编码问题
- Simple scanner of c
- Linux C编程小例子——pwd命令的实现
- linux图形界面字符界面切换
- linux下重置mysql密码
- Linux下自动挂载Windows Samba共享目录
- linux操作系统初步认识(二)
- linux解压war包
- Linux Deepin 2013发布
- linux awk命令详解
- ZT linux 线程私有数据之 一键多值技术
- LINUX 用户快速安装 GNS3
- 修复/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory问题
- the linux Command Line 学习笔记--mysql命令行导入sql文件到指定数据库的方法
- centos源码编译php5 mcrypt模块步骤详解
- Linux Platform驱动程序框架解析