Screen命令使用指南

如果你问我什么命令最能提高工作过程中的幸福感,就目前的情况来看,我一定会毫不犹豫地回答:“screen!没错就是screen,一定要会用screen!”至于原因且听下段分解。

1、screen简介

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。(from维基百科

2、screen功能

作为一个命令行版本的窗口管理器,screen主要有如下几个功能(如下内容取自维基百科):

(1)会话恢复

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

(2)多窗口

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

(3)会话共享

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

3、使用实例

这部分主要讲我是如何使用screen命令的。其实,screen主要是用在运行作业耗时比较长的情况。比如,我现在从windows用一个ssh的客户端(我一般用SecureCRT)连接到服务器,然后运行一个命令跑起一个作业。如果耗时比较长,我windows端的ssh客户端必须一直开着,不然,服务器上运行的作业就停了。这是很讨人烦的一点,因为即使能够不关机,一直开着这个ssh客户端,万一网络出了问题,还是会悲剧。这里就是screen发挥威力的地方。

screen可以管理一系列的多个会话,然后,可以将要运行的作业跑在某个会话下面。这样,即使windows的ssh客户端关掉或者是网络出了问题,只要没有通过screen将其运行的会话关掉,跑在服务器上的作业仍然会继续运行,而且你可以随时在任何地方(比如换台机器)重新连接服务器,连接到之前的会话来观察作业的运行情况。下面就讲一个使用中的例子。

3.1 使用

为了测试,首先我先写一个比较耗时的任务,这里为了简单,就直接写了两个for循环间隔1s输出,来耗时任务的运行。代码如下:

#!/bin/bash
#file name: work.sh
for a in aaa bbb ccc;
do
    echo $a
    sleep 1
done

for((a = 0;a<1000;a++));
do
    echo $a
    sleep 1
done

然后,对这个脚本使用命令“chmod a+x work.sh”来给其添加执行权限,这样运行这个作业的时候只需使用命令“./work.sh”即可。

3.2 在会话中运行作业

(1)创建会话

使用命令“screen -S RunWork”来创建一个screen会话,命令执行之后,就会得到一个新的shell窗口,为了便于标示可以用快捷键Ctrl-a A(就是按下Ctrl+a键,然后按下shift+a),这样窗口上光标会提示给窗口重命名。输入名称“RunWorkWindow”之后,回车就完成了对该窗口的重命名。这里的重命名是为了避免混淆同一会话中的不同窗口,可以用Ctrl-a w快捷键来查看当前的窗口名称,示意图如下:

(2)运行作业与会话detach以及会话恢复

下面使用命令“./work.sh”运行作业,然后用快捷键Ctrl-a d将当前会话detach。这样,即使网络断掉或者关掉ssh的客户端,作业仍然会在服务器上运行,而且可以通过“screen -ls”命令来查看当前有哪些会话以及它们各自的状态。如果想要恢复一个已经detach的会话,只需用“screen -r SessionID”即可(SessionID就是screen -ls命令结果中的每个session前面的数字)。会话被恢复之后,可以看到该会话在命令行的输入结果和输出信息。

到这里,基本上这个例子就结束了。如果要同时运行多个耗时作业,直接多启动几个screen会话就行。

4、总结

有了screen,我们就可以很方便地将作业运行起来,然后自己该干嘛干嘛去。这是我说它能够提升工作中幸福指数的主要原因。

时间: 2024-08-29 23:35:53

Screen命令使用指南的相关文章

Mac终端Screen命令使用指南

(1)创建会话 使用命令"screen -S RunWork"来创建一个screen会话,命令执行之后,就会得到一个新的shell窗口,为了便于标示可以用快捷键Ctrl-a A(就是按下Ctrl+a键,然后按下shift+a),这样窗口上光标会提示给窗口重命名.输入名称"RunWorkWindow"之后,回车就完成了对该窗口的重命名.这里的重命名是为了避免混淆同一会话中的不同窗口,可以用Ctrl-a w快捷键来查看当前的窗口名称 (2) 运行作业与会话detach以

screen命令的最常见的使用方法

这几天用到了screen命令来在远程主机上后台执行一些命令,主要用到: screen -S yourname -> 新建一个叫yourname的session screen -ls -> 列出当前所有的session screen -r yourname -> 回到yourname这个session C-a d ->快捷键, detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen

linux screen 命令详解

linux screen 命令详解 一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了.必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了. 二.简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命

Linux screen命令

screen 相关概念 会话:screen 命令从 linux 终端创建出一组进程来管理多个窗口的操作,这个进程组叫一个会话. 窗口:一个会话中可以创建一个或多个窗口,每一个窗口都相当于一个 ssh 登录,可以执行任何 shell 程序. 断开会话:一个会话可以中断,在想要重新进入时可以再进入进行未完成的工作. screen 常用操作 screen -S name  创建一个新的会话 screen -d name  从外部分离(detach)一个会话 C-a d 从内部暂离当前会话(先按住Ctr

xargs和exec详解、screen命令、curl命令

1.xargs和exec详解xargs execfind /var/log/  -type f  -mtime +10   (超过10天的文件)find /var/log/  -type f  -mtime +10  -exec cp {} {}.bak \; (将找到的文件都复制成.bak文件)find /var/log/  -type f  -mtime +10  |xargs  -i cp {}  {}.1  (复制重命名)ls |xargsls x* ls x*  |xargs rmls

linux screen 命令详解(未验证+研究)

一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了.必须等待它们执行完毕,在此期间不能关掉窗口或者断开连 接,否则这个任务就会被杀掉,一切半途而废了. 二.简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换. GN

Linux之screen命令详解

一.nohup 工作中经常会遇到这样的需求,通过SecureCRT或其它工具远程到服务器执行某个任务,而这个任务耗时又比较长,你又不得不等待它执行完毕,但是如果此间如果关掉窗口或断开连接又会导致任务被kill掉.之所以会出现这种状况,是在窗口关闭或网络断开时,系统会发送SIGHUP信号给会话控制进程,该进程会转发SIGHUP信号给前台运行进程,该信号的默认动作是终止程序,从而导致任务被kill掉,罪魁祸首就是SIGHUP信号.        如果能够忽略SIGHUP信号,则该问题就迎刃而解了,L

linux screen命令详解和常见问题解决

一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了.必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了. 二.简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换. GNU

[转]linux中强大的screen命令

[转]linux中强大的screen命令 http://pythonorg.diandian.com/post/2012-01-05/40027464147 今天用SCREEN用点生了,有几个功能不知道怎么用,上网搜了一下,有位哥们写的挺细的,向这哥们致敬,我这里就转走了,备查用.因为还有好几个有用实用好用的功能文章都没有描述到.我将在转载的最后给预补充.以下转载开始 转载地址:http://hi.baidu.com/nkhzj/blog/item/9de2cdfdddf0db42d7887d4