一.screen的安装和用法

Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器,这意味着你能够使用一个单一的终端窗口运行多终端的应用。 Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的 telnet/SSH连接窗口那样。

通俗的讲,screen命令用于新建一个或多个“命令行窗口”,在新建的这“窗口”中,可以执行命令;每个“窗口”都是独立并行的。

安装方法:
在线安装:

CentOS/Red Hat: yum install screen
Debian/Ubuntu:       apt-get install screen

 
源码编译安装:
[root@host1 src]# wget ftp://ftp.gnu.org/pub/gnu/screen/screen-4.0.3.tar.gz
[root@host1 src]# tar -zxvf screen-4.0.3.tar.gz
[root@host1 src]# cd screen-4.0.3
[root@host1 screen-4.0.2]# ./configure
[root@host1 screen-4.0.2]# make
[root@host1 screen-4.0.2]# make install
[root@host1 screen-4.0.2]# install -m 644 etc/etcscreenrc /etc/screenrc
[root@host1 screen-4.0.2]# cp ./screen /bin
注意和一般程序的安装过程有所不同,后面这两条指令一定要执行。 

screen的配置文件,一般在 /etc/screenrc 或者 ~/.screenrc,可以在文件里更改参数设定,也可以通过参数传递或者命令来动态指定。

语  法:

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 -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) 开始。退出screen使用 exit
例:Ctrl+a,d(按住Ctrl 然后按a 放开a 按d)

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

screen可以同步显示你的屏幕给另一个会话。这在给别人处理问题是尤为好用,可以让对方同步看到你的操作。
双方同时登陆一台主机,演示方输入  screen -S example,观看方输入 screen -x example,即可同步显示演示方输入的内容

大 家在初次接触linuxVPS时,会发现linux操作和windows操作太不相同的,windows都是图形操作界面,而linux一般是命令行操 作,当然,linux也有图形操作界面,但是我们在将vps作为网络生产环境时,安装图形界面不光费时费力,更费vps那少的可怜的系统资源,所以,还是 命令行吧,可是命令行只有一个,linux下编译命令一般执行也比较慢,如编译军哥的lnmp,少则半小时二十分钟,多则三小时五小时,一旦断开,正在编 译的软件也就完了,这很不符合偶们的折腾精神,难道就木有个解决方法?当然有,那就是screen。

二、简单举例

1. 创建会话:最简单的就是直接输入screen回车,一个新会话就完成了(debian下会有提示,再按一次回车就可以了),但偶还是推荐用下面的命令来创建会话:

screen -S php

上面命令的意思就是新创建一个名为php的会话,这时你可以继续输入其它命令,如编译php,费时很长,不用管它,喝杯茶先;

3. 离开会话,按住键盘上的ctrl,然后依次按a和d,好了,又回到主会话了,这时你可以继续创建其它会话或者执行其它命令,对我们创建的会话内容没有任何影响,你甚至可以退出会话;

3. 恢复创建的会话:如果还记得会话名称,可以输入命令:

screen -r php

上面命令的意思就是恢复名为php的会话,如果你只创建了一个会话,直接如入命令

screen -r

就可以恢复了,如果不记得会话名称或者我直接输入screen创建的会话,怎么办呢,那就要用到下面的命令;

4. 查看已经创建的会话:

screen -ls

上面的命令的意思就是查看本机已经创建的会话,可以查看会话的名称和id,恢复时可以使用id代替名称;

5. 有时在恢复screen时会出现There is no screen to be resumed matching ****,遇到这种情况咋办呢?输入命令

screen -d ****

然后再使用恢复命令恢复就ok了

6. 退出screen,使用screen会耗费一定的系统资源,所以当screen中的命令执行完毕之后,最好退出screen,直接输入命令

exit

就可以退出了。

7. 其它命令

Ctrl + a,d       #暂离当前会话

Ctrl + a,c        #在当前screen会话中创建一个子会话

Ctrl + a,w       #子会话列表

Ctrl + a,p       #上一个子会话

Ctrl + a,n       #下一个子会话

Ctrl + a,0-9   #在第0窗口至第9子会话间切换

linux 命令(1)screen的更多相关文章

  1. Linux命令nohup+screen 转

    如果想在关闭ssh连接后刚才启动的程序继续运行怎么办,可以使用nohup.但是如果要求第二天来的时候,一开ssh,还能查看到昨天运行的程序的状态,然后继续工作,这时nohup是不行了,需要使用scre ...

  2. 全网最详细的Linux命令系列-Screen远程会话命令

    screen 管理你的远程会话 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份.ftp 传输等等.通常情况下我们都 ...

  3. linux下使用screen和ping命令对网络质量进行监控

    linux下使用screen和ping命令对网络质量进行监控 场景:应用连接云服务器经常偶尔会出现连接不上的情况,android和IOS端连接的时候也会出现tcp延时5秒以上,现在想验证是否是云服务商 ...

  4. 【Linux杂记】screen命令

    screen命令: 解决的问题:有些进程启动后,一旦断开ssh容易断掉,所以新建一个screen(可以理解成窗口)并行运行 守护进程的方式:linux守护进程的方式实现开机启动某些特定的程序 屏幕命令 ...

  5. Linux命令笔记(一)

    vi 有三种模式,输入模式,编辑模式,“:”命令模式vi 进入以后默认是编辑模式vi 编辑模式默认的快捷键 上下左右分别是 J K H Lvi 在编辑模式使用 i 可以进入输入模式vi 输入模式只能输 ...

  6. 运维工程师必会的109个Linux命令

    运维工程师必会的109个Linux命令 版本1.0 崔存新 更新于2009-12-26 目录 1 文件管理 6 1.1 basename 6 1.2 cat 6 1.3 cd 7 1.4 chgrp ...

  7. 最有用的Linux命令行使用技巧集锦

    最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...

  8. linux命令(5)文件操作:ls命令、显示文件总个数

    一:ls命令是最常用的linux命令了:下面是ls --help里面的用法 在提示符下输入ls --help ,屏幕会显示该命令的使用格式及参数信息: 先介绍一下ls命令的主要参数: -a 列出目录下 ...

  9. 常用Linux命令小结

    常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记.当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临 ...

随机推荐

  1. Windows7下QT5开发环境搭建 分类: QT开发 2015-03-09 23:44 65人阅读 评论(0) 收藏

    Windows7下QT开法环境常见搭配方法有两种. 第一种是:QT Creator+QT SDK: 第二种是:VS+qt-vs-addin+QT SDK: 以上两种均可,所需文件见QT社区,QT下载地 ...

  2. Linux驱动设计——内存与IO访问

    名词解释 内存空间与IO空间 内存空间是计算机系统里面非系统内存区域的地址空间,现在的通用X86体系提供32位地址,寻址4G字节的内存空间,但一般的计算机只安装256M字节或者更少的内存,剩下的高位内 ...

  3. linux中的find命令——查找文件名

    1.在某目录下查找名为“elm.cc”的文件 find /home/lijiajia/ -name elm.cc 2.查找文件名中包含某字符(如"elm")的文件 find /ho ...

  4. 初识boost之boost::share_ptr用法

    boost中提供了几种智能指针方法:scoped_ptr shared_ptr intrusive_ptr weak_ptr,而标准库中提供的智能指针为auto_ptr. 这其中,我最喜欢,使用最多的 ...

  5. SpringMVC+spring-security+sitemesh+hibernate+freemarker整合-转

    http://www.oschina.net/code/snippet_170632_46774 代码分享 当前位置: 代码分享 » Java  » Web编程 搜 索   SpringMVC+spr ...

  6. python--flask使用

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.下面我将使用Flask框架,创建一个简单的html页面示例. 1.项目的目录结构如下所示:exweb\  uniqueenv\  a ...

  7. 001. 启动Visual Studio 2010报错

    错误内容: 外接程序"VMDebugger"未能加载或导致了异常. 是否希望移除该外接程序? 错误号: 80004005 如下图: 解决办法一: 1. 点击 是 打开VS2010, ...

  8. 无法在web服务器上启动调试。Microsoft Visual Studio 远程调试监视器(MSVSMON.EXE)似乎没有在远程计算机上运行,VS2012调试错误

    1.重启(无用) 2.关闭防火墙(无用) 3.开启文件与打印机共享(无用) 4.无远程调试权限,改为本地调试.或者是IIS中此项目没有启动.或者没有在IIS中新建此项目.

  9. Nginx Google 扩展

    安装配置详见: https://github.com/cuber/ngx_http_google_filter_module/blob/master/README.zh-CN.md tenginx详见 ...

  10. eclipse注解——作者,创建时间,版本

    总结: /** * @author liangyadong * @date ${date} ${time} * @version 1.0 */