Linux screen命令——多重视窗管理程序

screen命令

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

1. 简介

Linux screen命令用于多重视窗管理程序。

screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。

GNU Screen:
在这里插入图片描述

Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells. Each virtual terminal provides the functions of the DEC VT100 terminal and, in addition, several control functions from the ANSI X3.64 (ISO 6429) and ISO 2022 standards (e.g., insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows the user to move text regions between windows. When screen is called, it creates a single window with a shell in it (or the specified command) and then gets out of your way so that you can use the program as you normally would. Then, at any time, you can create new (full-screen) windows with other programs in them (including more shells), kill the current window, view a list of the active windows, turn output logging on and off, copy text between windows, view the scrollback history, switch between windows, etc. All windows run their programs completely independent of each other. Programs continue to run when their window is currently not visible and even when the whole screen session is detached from the users terminal.

Screen是一个全屏窗口管理器,它在多个进程(通常是交互式shell)之间多路传输物理终端。每个虚拟终端提供DEC VT100终端的功能,此外,还提供来自ANSI X3.64(ISO 6429)和ISO 2022标准的若干控制功能(例如,插入/删除行和支持多个字符集)。每个虚拟终端都有一个滚动历史缓冲区和一个复制粘贴机制,允许用户在窗口之间移动文本区域。当调用screen时,它会创建一个包含shell(或指定命令)的窗口,然后避开您的方式,以便您可以像平常一样使用该程序。然后,您可以随时创建新的(全屏)窗口,其中包含其他程序(包括更多shell),关闭当前窗口,查看活动窗口列表,打开和关闭输出日志记录,在窗口之间复制文本,查看滚动历史记录,在窗口之间切换,所有窗口都完全独立地运行它们的程序。当程序的窗口当前不可见时,甚至当整个屏幕会话与用户终端分离时,程序仍继续运行。

2. 安装screen程序

可以使用yum来安装:

yum install screen

3. 语法

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

参数说明:
-A:将所有的视窗都调整为目前终端机的大小。
-d<作业名称> :将指定的screen作业离线。
-h<行数>:指定视窗的缓冲区行数。
-m即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r<作业名称>:恢复离线的screen作业。
-R:先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s<shell>:指定建立新视窗时,所要执行的shell。
-S<作业名称>:指定screen作业的名称。
-v:显示版本信息。
-x:恢复之前离线的screen作业。
-ls或--list:显示目前所有的screen作业。
-wipe:检查目前所有的screen作业,并删除已经无法使用的screen作业。

4. 常用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 选定的内容贴上

在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章