第十六课时预习笔记

  

rsync工具介绍

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

从字面上的意思你可以理解为remote sync (远程同步)这样可以让你理解的更深刻一些。Rsync不仅可以远程同步数据(类似于scp [1]),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉。如果你的linux没有rsync命令请使用 yum install -y rsync 安装。


六种不同的模式

194755947.png

说明:src表示源文件,dest表示目的文件


常用选项

-a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一个 –no-OPTION 这个表示关闭-rlptgoD中的某一个例如 -a–no-l 等同于-rptgoD;

-r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项;

-t 保持文件的时间属性;

-p 保持文件的权限属性;

-l 保留软链接;

-L 同步软链接的同时同步其源文件;

-g 保存文件数组;

-o 保持文件的属主;

-D 保存设备文件信息;

-v =visual,可视化;

-P 显示同步过程,比v更详细;

-u =update,加上该选项,如果DEST中文件比SRC中的新,则不同步;

-z =zip,传输时压缩;

–delete 删除DEST中SRC没有的文件;

–exclude 过滤指定文件,不同步;

–progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等;

-e 指定端口;


特性

  • 可以镜像保存整个目录树和文件系统。

  • 可以很容易做到保持原来文件的权限、时间、软硬链接等等。

  • 无须特殊权限即可安装。

  • 快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

  • 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

  • 支持匿名传输,以方便进行网站镜象。

  • rsync实战

  • 通过ssh传输方式同步本地文件(两台机器上都必须要rsync才能成功同步)
  • [root@dl-001 tmp]# rsync -av /etc/passwd root@192.168.111.127:/tmp/1.txt    //dl-001机器
    The authenticity of host '192.168.111.127 (192.168.111.127)' can't be established.
    ECDSA key fingerprint is 44:ee:39:82:07:79:25:36:18:54:04:f2:2f:a6:33:fe.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.111.127' (ECDSA) to the list of known hosts.
    root@192.168.111.127's password: 
    sending incremental file list
    passwd              
    
    sent 1167 bytes  received 37 bytes  17.32 bytes/sec
    total size is 1090  speedup is 0.91
    
    [root@dl-002 ~]# cat /tmp/1.txt        //dl-002机器
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
  •  
  • 说明: 
    如果同步一个有软链接的文件,可以加上-L选项,这样软链接连同源文件一起同步。 
    可以把远程机器上的文件同步到本地机器,同步时只需要调换位置。


  • 使用ssh远程连接
  • [root@dl-001 ~]# ssh -p 22 192.168.111.127
    root@192.168.111.127's password:         //需要输入密码
    Last login: Wed Dec  6 21:50:58 2017 from 192.168.111.128
    [root@dl-002 ~]#                 //已经进入dl-002
    [root@dl-002 ~]
    # exit               //退出远程
    登出
    Connection to 192.168.111.127 closed.
  •  

  • 在同步的同时指定远程机器的端口号
  • # rsync -av -e "ssh -p 22" /etc/passwd root@192.168.111.127:/tmp/1.txt
  •  

  • 使用–delete实现在被同步的文件中删除同步文件中没有的文件。
  • [root@dl-001 ~]# ls            //dl-001机器上
    1_heard.txt  1.txt  2.txt            dd   root@192.168.111.127
    1_sorft.txt  222    anaconda-ks.cfg  dir
    [root@dl-001 ~]# ls dir
    test1  test6
    [root@dl-001 ~]# rsync -av --delete dir/ root@192.168.111.127:/tmp/dir
    root@192.168.111.127's password: 
    sending incremental file list
    ./
    deleting 567.txt
    test1
    test6
    
    sent 162 bytes  received 53 bytes  33.08 bytes/sec
    total size is 9  speedup is 0.04
    
    [root@dl-002 ~]# cd /tmp    //dl-002机器上
    [root@dl-002 tmp]# ls
    1.txt  dir  systemd-private-4c1b8f19ef2744319ab12a31cee97108-vmtoolsd.service-S1U6Lk
    [root@dl-002 tmp]# ls dir    //没有同步之前
    567.txt
    
    [root@dl-002 tmp]# ls dir    //同步文件之后,567.txt被删除了
    test1  test6
  •  

  • 使用–exclude实现过滤(不同步指定文件)
  • [root@dl-001 ~]# cd dir        //dl-001机器
    [root@dl-001 dir]# ls
    2.txt  43443.txt  test1  test6
    [root@dl-001 dir]# rsync -av --exclude "*.txt" dir/ root@192.168.111.127:/d
    root@192.168.111.127's password: 
    sending incremental file list
    rsync: change_dir "/root/dir//dir" failed: No such file or directory (2)
    
    sent 12 bytes  received 12 bytes  5.33 bytes/sec
    total size is 0  speedup is 0.00
    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]
    
    [root@dl-002 ~]# cd /d    //dl-002机器
    [root@dl-002 d]# ls        //可见.txt结尾的文件已经过滤了。
    test1  test6

    Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。


    大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。

     

    Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。

    完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。

    例如,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件通常都保存在“/var/log”目录下。

    日志类型

    下面是常见的日志类型,但并不是所有的Linux发行版都包含这些类型:

     

    类型说明
    auth用户认证时产生的日志,如login命令、su命令。
    authpriv与 auth 类似,但是只能被特定用户查看。
    console针对系统控制台的消息。
    cron系统定期执行计划任务时产生的日志。
    daemon某些守护进程产生的日志。
    ftpFTP服务。
    kern系统内核消息。
    local0.local7由自定义程序使用。
    lpr与打印机活动有关。
    mail邮件日志。
    mark产生时间戳。系统每隔一段时间向日志文件中输出当前时间,每行的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此推断系统发生故障的大概时间。
    news网络新闻传输协议(nntp)产生的消息。
    ntp网络时间协议(ntp)产生的消息。
    user用户进程。
    uucpUUCP子系统。

     

    日志优先级

    常见的日志优先级请见下标:

     

    优先级说明
    emerg紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。
    alert需要立即修复,例如系统数据库损坏。
    crit危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
    err一般错误消息。
    warning警告。
    notice不是错误,但是可能需要处理。
    info通用性消息,一般用来提供有用信息。
    debug调试程序产生的信息。
    none没有优先级,不记录任何日志消息。

    常用日志文件

    系统日志是由一个名为syslog的服务管理的,如以下日志文件都是由syslog日志服务驱动的:

    /var/log/boot.log:录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息

    /var/log/lastlog :记录最后一次用户成功登陆的时间、登陆IP等信息

    /var/log/messages :记录Linux操作系统常见的系统和服务错误信息

    /var/log/secure :Linux系统安全日志,记录用户和工作组变坏情况、用户登陆认证情况

    /var/log/btmp :记录Linux登陆失败的用户、时间以及远程IP地址

    /var/log/syslog:只记录警告信息,常常是系统出问题的信息,使用lastlog查看

    /var/log/wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,使用last命令查看

    /var/run/utmp:该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件

     

    /var/log/syslog 或 /var/log/messages 存储所有的全局系统活动数据,包括开机信息。基于 Debian 的系统如 Ubuntu 在 /var/log/syslog 中存储它们,而基于 RedHat 的系统如 RHEL 或 CentOS 则在 /var/log/messages 中存储它们。
    /var/log/auth.log 或 /var/log/secure 存储来自可插拔认证模块(PAM)的日志,包括成功的登录,失败的登录尝试和认证方式。Ubuntu 和 Debian 在 /var/log/auth.log 中存储认证信息,而 RedHat 和 CentOS 则在 /var/log/secure 中存储该信息。

    日志文件详细介绍:

    /var/log/boot.log

    该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息,如图1所示:

     

     

    /var/log/syslog

    默认Centos,Fedora不生成该日志文件,但可以配置/etc/syslog.conf让系统生成该日志文件。

    它和/etc/log/messages日志文件不同,它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件。

    要让系统生成该日志文件,在/etc/syslog.conf文件中加上:*.warning /var/log/syslog 该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。

    该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成。在每次用户登录时被查询,该文件是二进制文件,需要使用lastlog命令查看,根据UID排序显示登录名、端口号和上次登录时间。如果某用户从来没有登录过,就显示为"**Never logged in**"。该命令只能以root权限执行。简单地输入lastlog命令后就会看到类似图4的信息:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    [root@TestStation etc]# lastlog

    Username         Port     From             Latest

    root             pts/0    110.87.109.232   Wed Nov  2 10:34:20 +0800 2016

    bin                                        **Never logged in**

    daemon                                     **Never logged in**

    adm                                        **Never logged in**

    lp                                         **Never logged in**

    sync                                       **Never logged in**

    shutdown                                   **Never logged in**

    halt                                       **Never logged in**

    mail                                       **Never logged in**

    uucp                                       **Never logged in**

    operator                                   **Never logged in**

    games                                      **Never logged in**

    gopher                                     **Never logged in**

    ftp                                        **Never logged in**

    nobody                                     **Never logged in**

    vcsa                                       **Never logged in**

    saslauth                                   **Never logged in**

    postfix                                    **Never logged in**

    sshd                                       **Never logged in**

    ntp                                        **Never logged in**

    suda             pts/2    222.79.79.120    Tue Oct 25 16:00:01 +0800 2016

     

    /var/log/wtmp

    该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端tty或时间显示相应的记录。

    /var/run/utmp

    该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。

    以上提及的3个文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看。其中,utmp和wtmp文件的数据结构是一样的,而lastlog文件则使用另外的数据结构,关于它们的具体的数据结构可以使用man命令查询。

    每次有一个用户登录时,login程序在文件lastlog中查看用户的UID。如果存在,则把用户上次登录、注销时间和主机名写到标准输出中,然后login程序在lastlog中记录新的登录时间,打开utmp文件并插入用户的utmp记录。该记录一直用到用户登录退出时删除。utmp文件被各种命令使用,包括who、w、users和finger。

    下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登录退出时,具有更新时间戳的同一utmp记录附加到文件中。wtmp文件被程序last使用。

  • linux screen工具

  • 一、背景

    系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。

    二、简介

    GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

    GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

  • 会话恢复
  • 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。

  • 多窗口
  • 在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。

  • 会话共享
  • Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

    GNU's Screen 官方站点:http://www.gnu.org/software/screen/

    三、语法

    # screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

    参数说明

    -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 -S yourname -> 新建一个叫yourname的session
    screen -ls -> 列出当前所有的session
    screen -r yourname -> 回到yourname这个session
    screen -d yourname -> 远程detach某个session
    screen -d -r yourname -> 结束当前session并回到yourname这个session

    在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
    C-a ? -> 显示所有键绑定信息
    C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
    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 -> 显示所有窗口列表
    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 选定的内容贴上

    五、使用 screen

    5.1 安装screen

    流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。

    [root@TS-DEV ~]# yum install screen
    [root@TS-DEV ~]# rpm -qa|grep screen
    screen-4.0.3-4.el5
    [root@TS-DEV ~]#

    5.2 创建一个新的窗口

    安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨:

    [root@TS-DEV ~]# screen -S david 

    screen启动后,会创建第一个窗口,也就是窗口No. 0,并在其中打开一个系统默认的shell,一般都会是bash。所以你敲入命令screen之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入Screen的世界了。当然,也可以在screen命令之后加入你喜欢的参数,使之直接打开你指定的程序,例如:

    [root@TS-DEV ~]# screen vi david.txt

    screen创建一个执行vi david.txt的单窗口会话,退出vi 将退出该窗口/会话。

    5.3 查看窗口和窗口名称

    打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器,这个列表会列在标题栏里。窗口列表的样子一般是这样:

    0$ bash  1-$ bash  2*$ bash  

    这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。

    Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。练习了上面查看窗口的方法,你可能就希望各个窗口可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许你为当前窗口输入新的名字,回车确认。

    5.4 会话分离与恢复

    你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。例如,我们打开一个screen窗口编辑/tmp/david.txt文件:

    [root@TS-DEV ~]# screen vi /tmp/david.txt

    之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d,Screen会给出detached提示:

    暂时中断会话

    半个小时之后回来了,找到该screen会话:

    [root@TS-DEV ~]# screen -ls

    重新连接会话:

    [root@TS-DEV ~]# screen -r 12865

    一切都在。

    当然,如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了。

    这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来:

    5.5 清除dead 会话

    如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话:

    5.6 关闭或杀死窗口

    正常情况下,当你退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。

    如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。

    除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。

    六、screen 高级应用 

    6.1 会话共享

    还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令:

    [root@TS-DEV ~]# screen -x

    这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。

    6.2 会话锁定与解锁

    Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。

    也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。

    6.3 发送命令到screen会话

    在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作:

    [root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com

    这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。

    6.4 屏幕分割

    现在显示器那么大,将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷键是C-a |。分屏以后,可以使用C-a <tab>在各个区块间切换,每一区块上都可以创建窗口并在其中运行进程。

    可以用C-a X快捷键关闭当前焦点所在的屏幕区块,也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭,还可以通过窗口切换找到它。

    6.5 C/P模式和操作

    screen的另一个很强大的功能就是可以在不同窗口之间进行复制粘贴了。使用快捷键C-a <Esc>或者C-a [可以进入copy/paste模式,这个模式下可以像在vi中一样移动光标,并可以使用空格键设置标记。其实在这个模式下有很多类似vi的操作,譬如使用/进行搜索,使用y快速标记一行,使用w快速标记一个单词等。关于C/P模式下的高级操作,其文档的这一部分有比较详细的说明。

    一般情况下,可以移动光标到指定位置,按下空格设置一个开头标记,然后移动光标到结尾位置,按下空格设置第二个标记,同时会将两个标记之间的部分储存在copy/paste buffer中,并退出copy/paste模式。在正常模式下,可以使用快捷键C-a ]将储存在buffer中的内容粘贴到当前窗口。

    6.6 更多screen功能

    同大多数UNIX程序一样,GNU Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。如果你愿意的话,也可以自己指定screen配置文件。

    以多用户功能为例,screen默认是以单用户模式运行的,你需要在配置文件中指定multiuser on 来打开多用户模式,通过acl*(acladd,acldel,aclchg...)命令,你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值