安装screen
[root@Centos7 ~]# yum -y install screen
//如果你不是root用户使用如下命令
[yuxin@Centos7 ~]$ sudo yum -y install screen
//通过下面这个命令查询是否安装成功
[root@Centos7 ~]# rpm -qa screen
screen基本语法
screen语法:
screen [-Rvx -ls][-d <会话名称>][-h <行数>][-r <会话名称>][-S <会话名称>]
说明如下。
❑ -R:先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
❑ -v:显示版本信息。-x:登录到一个screen会话,即使这个会话已经被人使用了也可以同时登录。如果系统不只有一个会话,需要指定会话名称。在多用户环境下需要小心,可能会导致死循环。
❑ -ls或-list:显示目前所有的screen作业。
❑ -d <会话名称>:将指定的screen会话离线。
❑ -h <行数>:指定缓冲区的行数(和内存大小有关)。
❑ -r <会话名称>:恢复离线的screen会话。如果screen会话是一个激活的会话,将无法再次打开。
❑ -S <会话名称>:指定screen会话的名称。
❑ -wipe[插图]:检查目前所有的screen会话,并删除已经无法使用的screen会话,用于清理一些死进程。
[root@open ~]# screen --help
Use: screen [-opts] [cmd [args]]
or: screen -r [host.tty]
Options:
-a Force all capabilities into each window's termcap.
-A -[r|R] Adapt all windows to the new display width & height.
-c file Read configuration file instead of '.screenrc'.
-d (-r) Detach the elsewhere running screen (and reattach here).
-dmS name Start as daemon: Screen session in detached mode.
-D (-r) Detach and logout remote (and reattach here).
-D -RR Do whatever is needed to get a screen session.
-e xy Change command characters.
-f Flow control on, -fn = off, -fa = auto.
-h lines Set the size of the scrollback history buffer.
-i Interrupt output sooner when flow control is on.
-l Login mode on (update /var/run/utmp), -ln = off.
-ls [match] or
-list Do nothing, just list our SockDir [on possible matches].
-L Turn on output logging.
-Logfile file Set logfile name.
-m ignore $STY variable, do create a new screen session.
-O Choose optimal output rather than exact vt100 emulation.
-p window Preselect the named window if it exists.
-q Quiet startup. Exits with non-zero return code if unsuccessful.
-Q Commands will send the response to the stdout of the querying process.
-r [session] Reattach to a detached screen process.
-R Reattach if possible, otherwise start a new session.
-s shell Shell to execute rather than $SHELL.
-S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title Set title. (window's name).
-T term Use term as $TERM for windows, rather than "screen".
-U Tell screen to use UTF-8 encoding.
-v Print "Screen version 4.09.00 (GNU) 30-Jan-22".
-wipe [match] Do nothing, just clean up SockDir [on possible matches].
-x Attach to a not detached screen. (Multi display mode).
-X Execute <cmd> as a screen command in the specified session.
screen基本操作
通常启动screen会话的方式如下:
[root@Centos7 ~]# screen -S 会话名称
在screen命令后可以直接加上你想执行的命令。例如,你想直接登录一台设备(见下面的命令)。当你退出登录这台设备的同时,这个screen的这个窗口也就结束了。如果这个窗口恰巧又是这个screen的最后一个窗口,那么整个会话也就结束了。
[root@Centos7 ~]# screen -S test ssh root@192.168.1.1
screen会话中的常用命令
在screen会话中,所有的命令都是以C-a(快捷键Ctrl+A)开始的
screen配置文件
screen提供了丰富且强大的定制功能,其默认两级配置文件的位置是/etc/screenrc与$HOME/.screenrc(/etc/screenrc是整台服务器全局的配置,
$HOME/.screenrc是当前用户的配置;
当配置冲突时,优先使用$HOME/.screenrc里面的配置)。
设置screen选项、定制命令键、设置会话启动的窗口信息与日志信息、启动多用户模式、设置用户的访问权限等,都可以在配置文件中设置。
以下是几种常用的参数
[root@centos7-1 ~]# cat .screenrc
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.gY}%n %t%{-}%+w %=%{..G} %c:%s %M-%d-%Y"
startup_message off
vbell off
defutf8 on
logfile $HOME/log/screenlog_%S_%t_%Y_%m_%d_%c.%n.log
管理screen的日志
修改配置文件。配置文件可以是/etc/screenrc或者是$HOME/.screenrc。我们在配置文件中加入如下配置:
logfile $HOME/log/screenlog_%S_%t_%Y_%m_%d_%c.%n.log
首先要确保 H O M E 目录下有 l o g 文件夹。如果没有,可以通过 l i n u x 命令—— m k d i r HOME目录下有log文件夹。如果没有,可以通过linux命令——mkdir HOME目录下有log文件夹。如果没有,可以通过linux命令——mkdirHOME/log来创建。然后使用如下命令启动一个screen。
多人共享一个会话
在多人协作的情况下,这是一个非常好用的功能。首先,需要开启screen的多用户模式。在/etc/screenrc配置文件中加入如下配置:
multiuser on
然后用户A启动一个screen会话,此时如果允许另外一个用户能够访问自己的会话,需要在这个会话中添加权限,方法是在C-a后输入:acladd 。
另外一个用户如果需要同时登录这个会话,输入的命令如下:
$screen -x <username>/24631.yuxin
这样,两个用户可以同时看到相同的操作,无论是登录设备的方式是基于串口协议(也称为console)还是Telnet或SSH。这个功能在多人进行协作时还是很方便的。