Linux中的screen命令使用详解_Linux

来源:脚本之家  责任编辑:小易  

1.xshell,securecrt等软件可以开很多tab同时操作,screen可以在一个终端里模拟很多终端,一样方便。2.断电或者蓝屏,终端断了,服务器端所有程序收到hup信号,前台任务全部终止,各种工作环境全部丢失。如果在screen里边操作,那没问题,下次登录到服务器上,连上screen,恢复之前的一切,继续来。有不可间断,还不能放后台的任务,用screen,是解脱你的好办法。3.screen可以多人同时观看同一个终端,做讲解之类的时候很方便www.zgxue.com防采集请勿采集本网。

GUN Screen:

因为除了screen的语句都是发给你执行shell脚本的终端的,你比如打个echo 'test' 运行脚本,这时你在screen里的话 会发现什么也没有,但你退出会发现打印了 test 你如果想不被kill掉的话,可以用

官方网址:http://www.gnu.org/software/screen/

screen命令的常用命令参数包括: 参数 作用 A 让所有视窗自动调整适应当前终端机的大小。d<会话名称>将指定的screen会话离线。r<会话名称>将指定的screen会话恢复。h<行数>指定视窗的缓冲区行数。S<会话

1、简介

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

nohup 后台运行忽略中断信号 相当于一个不死进程 screen 可以理解为开启了一个不死界面环境

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

下面列出了Linux最常用的一些命令,及其功能:1、cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对

2、语法

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

用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作业。

3、常用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

4、在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 选定的内容贴上

5、常用操作

创建会话(-m 强制):

screen -dmS session_name# session_name session名称

关闭会话:

screen -X -S [session # you want to kill] quit

查看所有会话:

screen -ls

进入会话:

screen -r session_name

文章部分内容参考:http://man.linuxde.net/screen

作为linux服务器管理员,经常要使用ssh登陆到远程linux机器上做一些耗时的操作。也许你遇到过使用telnet或SSH远程登录linux,运行一些程序。如果这些程序需要运行很长时间(几个小时),而程序运行过程中出现网络故障,或者客户机故障,这时候客户机与远程服务器的链接将终端,并且远程服务器没有正常结束的命令将被迫终止。又比如你SSH到主机上后,开始批量的scp命令,如果这个ssh线程断线了,scp进程就中断了。在远程服务器上正在运行某些耗时的作业,但是工作还没做完快要下班了,退出的话就会中断操作了,如何才好呢?我们利用screen命令可以很好的解决这个问题。实现在断开SSH的情况下,在服务器上继续执行程序。那什么是screen命令?Screen被称之为一个全屏窗口管理器,用他可以轻松在一个物理终端上获得多个虚拟终端的效果。Screen功能说明:简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器,这意味着你能够使用一个单一的终端窗口运行多终端的应用。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。Screen命令语法:screen[-AmRvx-ls-wipe][-d<作业名称>][-h<行数>][-r<作业名称>][-s][-S<作业名称>]Screen命令参数:-A-[rR]将所有的视窗都调整为目前终端机的大小。c filename 用指定的filename文件替代screen的配置文件’.screenrc’.-d[pid.tty.host]断开screen进程(使用该命令时,screen的状态一定要是Attached,也就是说有用户连在screen里)。一般进程的名字是以pid.tty.host这种形式表示(用screen-list命令可以看出状态)。D[pid.tty.host]与-d命令实现一样的功能,区别就是如果执行成功,会踢掉原来在screen里的用户并让他logout。h<行数>指定视窗的缓冲区行数。ls或–list 显示目前所有的screen作业。m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。p number or name 预先选择一个窗口。r[pid.tty.host]恢复离线的screen进程,如果有多个断开的进程,需要指定[pid.tty.host]-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。s shell 指定建立新视窗时,所要执行的shell。S<作业名称>指定screen作业的名称。(用来替代[pid.tty.host]的命名方式,可以简化操作).-v 显示版本信息。wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。x 恢复之前离线的screen作业。Screen命令的常规用法:screen-d-r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户再连接。screen-D-r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户并让他logout再连接 screen-ls或者-list:显示存在的screen进程,常用命令 screen-m:如果在一个Screen进程里,用快捷键crtl+a c或者直接打screen可以创建一个新窗口,screen-m可以新建一个screen进程。screen-dm:新建一个screen,并默认是detached模式,也就是建好之后不会连上去。screen-p number or name:预先选择一个窗口。Screen实现后台运行程序的简单步骤:1>要进行某项操作时,先使用命令创建一个Screen:代码如下:[linux@user~]$screen-S test1 2>接着就可以在里面进行操作了,如果你的任务还没完成就要走开的话,使用命令保留Screen:代码如下:[linux@user~]$Ctrl+a+d#按Ctrl+a,然后再按d即可保留Screen[detached]#这时会显示出这个提示,说明已经保留好Screen了 如果你工作完成的话,就直接输入:代码如下:[linux@user~]$exit#这样就表示成功退出了[screen is terminating]3>如果你上一次保留了Screen,可以使用命令查看:代码如下:[linux@user~]$screen-ls There is a screen on:9649.test1(Detached)恢复Screen,使用命令:代码如下:[linux@user~]$screen-r test1(or 9649)Screen命令中用到的快捷键 Ctrl+a c:创建窗口 Ctrl+a w:窗口列表 Ctrl+a n:下一个窗口 Ctrl+a p:上一个窗口 Ctrl+a 0-9:在第0个窗口和第9个窗口之间切换 Ctrl+a K(大写):关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态)exit:关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态)Ctrl+a d:退出当前终端,返回加载screen前的shell命令状态 多窗口 screen,像许多的窗口管理器一样,能支持多窗口。这个功能在处理多个任务且同时没有打开新的会话时 很有用。作为一个系统管理员,我常常要同时开四五个SSH会话。在每个shell下,我可能要处理两三个任务。不使用screen的话,需要15个SSH 会话,15次登录,15个窗口等等。使用screen,每个系统都分配到一个单独的会话中,我通过screen来管理系统上不同的作业。要打开新的窗口,只需要使用“Ctrl-A”“c”。创建的新的窗口会显示一个默认的命令提示符。例如,我可以运行top命令后再打开一个新的窗口来做其它的工作。Top继续留在那运行!可以亲身实验一下,启动screen并运行top。(注:为了节省空间我截断了多个屏幕。启动top 代码如下:Mem:506028K av,500596K used,5432K free,0K shrd,11752K buff Swap:1020116K av,53320K used,966796K free 393660K cached< p>PID USER PRI NI SIZE RSS SHARE STAT%CPU%ME 6538 root 25 0 1892 1892 596 R 49.1 0.3 6614 root 16 0 1544 1544 668 S 28.3 0.3 7198 admin 15 0 1108 1104 828 R 5.6 0.2 现在可以通过“Ctrl-A”“c”来打开一个新窗口 代码如下:[admin@ensim admin]$To get back to top,use"Ctrl-A"n"Mem:506028K av,500588K used,5440K free,0K shrd,11960K buff Swap:1020116K av,53320K used,966796K free 392220K cached< p>PID USER PRI NI SIZE RSS SHARE STAT%CPU%ME 6538 root 25 0 1892 1892 596 R 48.3 0.3 6614 root 15 0 1544 1544 668 S 30.7 0.3 你可以创建多个窗口然后通过“Ctrl-A”“n”切换到下一个窗口,或者使用“Ctrl-A”“p”返回上一个窗口。当你在其它窗口工作时,其它窗口的每个程序都会保持运行。退出screen 有两种方式退出screen。第一种和登出一个shell一样,你可以通过“Ctrl-A”“K”或者“exit”来终止一个窗口。这样当前的窗口会被关闭,如果你打开了多个窗口,你就会直接转到其余中的一个,而如果是仅有的一个窗口时,你就退出了screen。另外一种退出screen的方式是分离窗口。这种方式只是简单地关闭了窗口但进程仍运行着。如果你有确定要长时间执行的进程,还需要关闭SSH程序时,你便可以使用“Ctrl-A”“d”分离窗口。这会使你回到shell中。所有的screen窗口都待在那里,你可以稍后重新接管它们。(译者注:这很像我们实际中的最小化窗口和程序后台运行)接管会话 假设你正用着screen花了很长时间编译着一个程序,突然间你的连接断开了。请不用担心,screen会保存你的编译进度。重新登录你的操作系统后使用screen列表工具查看有哪些会话正在运行:代码如下:[root@gigan root]#screen-ls There are screens on:31619.ttyp2.gigan(Detached)4731.ttyp2.gigan(Detached)2 Sockets in/tmp/screens/S-root.在这里,我有两个不同的screen会话。要需要重新接管其中一个,使用恢复窗口的命令:代码如下:[root@gigan root]#screen-r 31619.ttyp2.gigan 只需要使用-r 选项再接会话的名,现在你便可以重新回到刚才的屏幕。令人欣喜的是,你还可以在任何地方重新接管。不论在办公室还是其它客户端上,你都可以使用screen来启动一项工作然后退出。多窗口 screen,像许多的窗口管理器一样,能支持多窗口。这个功能在处理多个任务且同时没有打开新的会话时 很有用。作为一个系统管理员,我常常要同时开四五个SSH会话。在每个shell下,我可能要处理两三个任务。不使用screen的话,需要15个SSH 会话,15次登录,15个窗口等等。使用screen,每个系统都分配到一个单独的会话中,我通过screen来管理系统上不同的作业。要打开新的窗口,只需要使用“Ctrl-A”“c”。创建的新的窗口会显示一个默认的命令提示符。例如,我可以运行top命令后再打开一个新的窗口来做其它的工作。Top继续留在那运行!可以亲身实验一下,启动screen并运行top。(注:为了节省空间我截断了多个屏幕。启动top 代码如下:Mem:506028K av,500596K used,5432K free,0K shrd,11752K buff Swap:1020116K av,53320K used,966796K free 393660K cached< p>PID USER PRI NI SIZE RSS SHARE STAT%CPU%ME 6538 root 25 0 1892 1892 596 R 49.1 0.3 6614 root 16 0 1544 1544 668 S 28.3 0.3 7198 admin 15 0 1108 1104 828 R 5.6 0.2 现在可以通过“Ctrl-A”“c”来打开一个新窗口 代码如下:[admin@ensim admin]$To get back to top,use"Ctrl-A"n"Mem:506028K av,500588K used,5440K free,0K shrd,11960K buff Swap:1020116K av,53320K used,966796K free 392220K cached< p>PID USER PRI NI SIZE RSS SHARE STAT%CPU%ME 6538 root 25 0 1892 1892 596 R 48.3 0.3 6614 root 15 0 1544 1544 668 S 30.7 0.3 你可以创建多个窗口然后通过“Ctrl-A”“n”切换到下一个窗口,或者使用“Ctrl-A”“p”返回上一个窗口。当你在其它窗口工作时,其它窗口的每个程序都会保持运行。退出screen 有两种方式退出screen。第一种和登出一个shell一样,你可以通过“Ctrl-A”“K”或者“exit”来终止一个窗口。这样当前的窗口会被关闭,如果你打开了多个窗口,你就会直接转到其余中的一个,而如果是仅有的一个窗口时,你就退出了screen。另外一种退出screen的方式是分离窗口。这种方式只是简单地关闭了窗口但进程仍运行着。如果你有确定要长时间执行的进程,还需要关闭SSH程序时,你便可以使用“Ctrl-A”“d”分离窗口。这会使你回到shell中。所有的screen窗口都待在那里,你可以稍后重新接管它们。(译者注:这很像我们实际中的最小化窗口和程序后台运行)接管会话 假设你正用着screen花了很长时间编译着一个程序,突然间你的连接断开了。请不用担心,..内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • linux系统命令中screen命令详解
  • linux中 关于screen 的命令详解
  • linux中screen命令及使用方法
  • centos 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置
  • 浅谈生产者消费者模型(linux系统下的两种实现方法)
  • linux系统扩容根目录磁盘空间的操作方法
  • win7下vmware虚拟机安装linux7.2上网配置教程
  • linux locate命令的使用方法
  • io多路复用之poll全面总结(必看篇)
  • linux多线程环境下 关于进程线程终止函数总结
  • 基于nginx0.8.54+php5.3.4+mysql5.5.8的全新lnmp稳定版架构搭建的
  • 详解ubuntu16.04安装nvidia驱动+cuda+cudnn的教程
  • linux实现自动删除最旧的几个文件详解
  • Linux怎么使用screen命令
  • linux中screen命令一般有哪些应用场景
  • Linux CentOS screen命令打开一个窗口
  • linux命令nohup和screen命令的区别
  • linux screen 命令放入脚本怎么不执行?
  • 怎样使用Screen 指令操控 UNIX/Linux
  • Linux命令nohup和screen命令的区别
  • 怎样使用Screen 指令操控 UNIX/Linux
  • linux脚本 screen之后的命令都不会执行,怎么解决
  • 怎样使用Screen 指令操控 UNIX/Linux
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全星外虚拟主机华众虚拟主机linuxwin服务器ftp服务器dns服务器tomcat nginxzabbix云和虚拟化服务器其它首页服务器linuxlinux系统命令中screen命令详解linux中 关于screen 的命令详解linux中screen命令及使用方法centos 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置浅谈生产者消费者模型(linux系统下的两种实现方法)linux系统扩容根目录磁盘空间的操作方法win7下vmware虚拟机安装linux7.2上网配置教程linux locate命令的使用方法io多路复用之poll全面总结(必看篇)linux多线程环境下 关于进程线程终止函数总结基于nginx0.8.54+php5.3.4+mysql5.5.8的全新lnmp稳定版架构搭建的详解ubuntu16.04安装nvidia驱动+cuda+cudnn的教程linux实现自动删除最旧的几个文件详解apache开启.htaccess及.htaccessservice temporarily unavailabllinux下实现免密码登录(超详细)apache rewrite url重定向功能的linux下用cron定时执行任务的方法apache性能测试工具ab使用详解centos 6.4安装配置lamp服务器(acentos+nginx+php+mysql详细配置apache you don""t have permissflume环境部署和配置详解及案例大linux磁盘格式化命令详解linux i/o多路复用详解及实例centos 6.4 安装python 2.7 python-pip的linux中mkdir命令使用详解单台服务器中利用apache的virtualhost如何centos7.2安装nginx的方法步骤linux 查看远程服务器文件状态的方法ubuntu18.04安装opencv 3.2.0的解决方法apache下modsecurity的安装启用与配置git bash配置ssh 登录 linux的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved