当前位置: 首页 > Linux

linuxscreen命令详解

时间:2023-04-06 02:22:11 Linux

linuxscreen命令详解只能完成的任务,如系统备份,ftp传输等。通常我们为这些任务中的每一个打开一个远程终端窗口,因为它们执行时间太长。必须等他们执行完,期间不能关闭窗口或断开连接,否则任务会被kill掉,一切都中途放弃。简介GNUScreen是GNU项目开发的一款用于命令行终端切换的免费软件。用户可以通过软件同时连接到多个本地或远程命令行会话,并在它们之间自由切换。GNUScreen可以被认为是窗口管理器的命令行界面版本。它为管理多个会话提供了统一的接口和相应的功能。会话恢复只要屏幕本身没有终止,在屏幕内运行的会话就可以恢复。这对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对他们已经打开的命令行会话的控制。只需重新登录主机并执行screen-r即可恢复会话。同样,在临时离开时,也可以在保证里面程序正常运行的情况下,执行detach命令挂起Screen(切换到后台)。这和图形界面下的VNC很相似。多窗口在Screen环境中,所有会话独立运行并有自己的编号、输入、输出和窗口缓冲区。用户可以通过快捷键在不同的窗口之间切换,并且可以自由地重定向每个窗口的输入输出。Screen实现了基本的文本操作,比如复制粘贴等;它还提供了类似滚动条的功能,让你可以查看历史窗口状态。还可以对窗口进行分区和命名,还可以监控后台窗口活动。SessionsharingScreen允许一个或多个用户从不同的终端多次登录一个会话并共享该会话的所有特征(例如,他们可以看到完全相同的输出)。它还提供了窗口访问机制,可以对窗口进行密码保护。GNU的Screen官网:http://www.gnu.org/software/s...语法screen[-AmRvx-ls-wipe][-d][-h][-r][-s][-S]参数说明-A将所有窗口调整为当前终端的大小。-d使指定的屏幕作业脱机。-h<行数>指定视口的缓冲区行数。-m强制创建新的屏幕作业,即使屏幕作业已经在作业中。-r恢复离线屏幕作业。-R首先尝试恢复离线作业。如果找不到离线作业,请创建一个新的屏幕作业。-s指定在创建新窗口时要执行的shell。-S指定屏幕作业的名称。-v显示版本信息。-x恢复以前的脱机屏幕作业。-ls或--list显示所有当前屏幕作业。-wipe检查所有当前的屏幕作业并删除不再可用的屏幕作业。常用屏幕参数screen-Syourname->新建一个名为yourname的sessionscreen-ls->列出当前所有sessionscreen-ryourname->返回到yourname的sessionscreen-dyourname->远程detach某个sessionscreen-d-ryourname->结束当前会话并返回到您的姓名会话。在每个屏幕会话下,所有命令都以ctrl+a(C-a)开头。C-a?->显示所有键绑定C-ac->创建一个运行shell的新窗口并切换到它C-an->Next,切换到下一个窗口C-ap->Previous,切换到上一个窗口C-a0..9->切换到0..9thwindowCtrl+a[Space]->从window0依次切换到window9C-aC-a->在最近使用的两个窗口之间切换C-ax->lock当前窗口需要用用户密码解锁C-ad->detach,暂时离开当前session,将当前screensession(可能包含多个窗口)丢到后台执行,回到进入screen前的状态。在屏幕会话中,每个窗口(无论是前台/后台)运行的进程继续执行,即使注销也不受影响。C-az->将当前会话放入后台执行,使用shell的fg命令返回。C-aw->显示所有窗口列表C-at->Time,显示当前时间,系统加载C-ak->killwindow,强行关闭当前窗口C-a[->进入复制模式,可以rollbackincopymode,search,copy和vi一样C-bBackward,PageUpC-fForward,PageDownH(大写)High,移动光标到左上角LLow,移动光标到左下角0移动到开头line$行尾w向前一个字,以字为单位向前移动b向后一个字,以字为单位向后移动Space按第一次为标记区域的起点,按第二次为结束点Esc结束复制模式C-a]->粘贴,粘贴刚才的复制模式选中的内容粘贴使用screen安装screen流行的Linux发行版(如RedHatEnterpriseLinux)通常自带screen实用程序,如果没有,可以下载来自GNU屏幕的官方网站。[root@TS-DEV~]#yuminstallscreen[root@TS-DEV~]#rpm-qa|grepscreenscreen-4.0.3-4.el5[root@TS-DEV~]#新建窗口安装时完成后,只需键入命令屏幕即可启动它。但是,以这种方式启动的屏幕会话没有名称。实际操作中,建议给每个screensession起个名字,方便识别:[root@TS-DEV~]#screen-Sdavidscreen会创建第一个窗口,也就是0号窗口,并打开一个系统默认的shell在其中,通常是bash。所以在你输入命令屏幕后,你会立即返回到命令提示符,就好像什么都没发生过一样。事实上,你已经进入了屏幕的世界。当然你也可以在screen命令后加上自己喜欢的参数直接打开你指定的程序,例如:[root@TS-DEV~]#screenvidavid.txtscreen创建一个执行vidavid的单窗口会话。txt,退出vi将退出该窗口/会话。查看窗口和窗口名称打开多个窗口后,可以使用快捷键C-aw列出当前所有窗口。如果您使用文本终端,此列表将列在屏幕的左下角,如果您在X环境中使用终端仿真器,此列表将列在标题栏中。窗口列表一般是这样的:0$bash1-$bash2*$bash在这个例子中,我打开了三个窗口,其中*符号表示我当前在窗口2中,-符号表示我在上次切换窗口时的窗口1。默认情况下,Screen会将窗口中运行的程序的编号和名称组合命名为窗口。在上面的例子中,窗口都是默认名称。练习完上面的查看窗口的方法后,您可能希望每个窗口都有不同的名称,以便于区分它们。您可以使用快捷键C-aA重命名当前窗口。按下快捷键后,Screen会让你为当前窗口输入一个新的名称,然后回车确认。会话分离与恢复可以在不中断屏幕窗口中程序运行的情况下,暂时断开(detach)屏幕会话,稍后再重新连接(attach)会话,以重新获得对每个窗口中运行的程序的控制权。比如我们打开一个screen窗口编辑/tmp/david.txt文件:[root@TS-DEV~]#screenvi/tmp/david.txt之后我们想暂时退出做点别的事情,比如比如出去走走,然后在screen窗口输入C-ad,Screen会给出超脱提示:暂时中断session,半小时后再回来,找到screensession:[root@TS-DEV~]#screen-ls重新连接会话:[root@TS-DEV~]#screen-r12865一切都在那里。当然,如果您不在另一台机器上分离Screen会话,则无法恢复该会话。这时候可以使用如下命令,将这个session从它的终端强行分离出来,转移到一个新的终端:列表将显示会话已死。使用screen-wipe命令清除会话:关闭或杀死窗口通常,当您退出一个窗口中的最后一个程序(通常是bash)时,该窗口将被关闭。另一种关闭窗口的方法是使用C-ak,这个快捷键会杀死当前窗口,同时也会杀死该窗口中正在运行的进程。如果一个Screen会话中的最后一个窗口被关闭,整个Screen会话也会退出,screen进程也将终止。除了依次退出/杀死当前Screen会话中的所有窗口外,还可以使用快捷键C-a:,然后输入quit命令退出Screen会话。请注意,这样退出将杀死所有窗口并退出其中运行的所有程序。其实C-a:这个快捷键可以让用户直接输入很多命令,包括分屏输入等,这也是实现Screen功能的一种方式,不过个人觉得快捷键更方便。screen进阶应用 Sessionsharing还有一个比较有意思的sessionrecovery,可以实现sessionsharing。假设你和你的朋友在异地用同一个用户登录一台机器,然后你创建了一个screen会话,你的朋友可以在他的终端上命令:[root@TS-DEV~]#screen-x这个命令会记录你朋友的终端是Attached到你的Screensession,你的终端不会被Detach。通过这种方式,您可以与朋友共享同一会话。如果你当前在同一个窗口,就相当于坐在同一个显示器前。你的操作会同步演示给你的朋友,你朋友的操作也会同步演示。为你。当然,如果切换到本次会话的不同窗口,仍然可以分别进行不同的操作。会话锁定和解锁屏幕允许使用快捷键C-as锁定会话。锁定后,屏幕将不再响应任何输入。但需要注意的是,虽然屏幕上看不到任何反应,但是你的输入会被Screen中的进程接收到。快捷方式C-aq解锁会话。您还可以使用C-ax来锁定会话。不同的是,锁定后,session会受到Screen所属用户的密码保护,需要输入密码才能继续访问session。向screen会话发送命令在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为将Screen作为脚本程序使用增加了方便。Screen在脚本中的应用不在入门范围之内。这里只是一个例子,体验会话外Screen的操作:[root@TS-DEV~]#screen-Ssandy-Xscreenpingwww.baidu.com这条命令在screen会话中新建一个窗口sandy和在其中运行ping命令。屏幕分割既然显示器这么大,将一个屏幕分割成不同的区域,显示不同的Screen窗口,显然是一件很酷的事情。您可以使用快捷键C-aS水平分割显示。Screen4.00.03之后,还支持垂直分屏。快捷键是C-a|。分屏后,可以使用C-a在各个块之间切换,并且可以在每个块上创建一个窗口,并在其中运行一个进程。您可以使用C-aX快捷键关闭当前获得焦点的屏幕区域,也可以使用C-aQ关闭当前区域以外的所有其他区域。closed块中的窗口不会关闭,也可以通过窗口切换找到。C/P模式和操作画面的另一个非常强大的功能是可以在不同的窗口之间进行复制和粘贴。使用快捷键C-a或C-a[进入复制/粘贴模式。在这种模式下,可以像在vi中一样移动光标,空格键可以用来设置标记。其实这个模式下还有很多类似vi的操作,比如用/来查找,用y快速标记一行,用w快速标记一个词等等。关于C/P模式下的高级操作,文档的这一部分有更详细的描述。一般情况下,可以将光标移动到指定位置,按空格键设置一个开始标记,然后将光标移动到结束位置,按空格键设置第二个标记,两个标记之间的部分存储在复制/粘贴缓冲区中,并退出复制/粘贴模式。在普通模式下,可以使用快捷键C-a]将缓冲区中存储的内容粘贴到当前窗口。更多屏幕功能与大多数UNIX程序一样,GNUScreen提供了丰富而强大的自定义功能。你可以在Screen默认的两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多,比如设置screen选项,自定义绑定键,设置screen会话自启动窗口,开启多用户模式,自定义用户权限控制等等。如果愿意,您也可以自己指定屏幕配置文件。以多用户功能为例,screen默认运行在单用户模式下,需要在配置文件中指定multiuseron开启多用户模式,通过acl*(acladd,acldel,aclchg...)命令,您可以灵活配置其他用户访问您的屏幕会话。更多配置文件请参考screen的manpage。