Linux技巧:Screen的使用

阿里云等云服务器一般允许我们用SSH登录我们的机器,然后就可以像使用自己的电脑一样使用远端的服务器了。可是我们在SSH里运行的程序在我们关闭SSH连接之后也会自动终止,我们想让服务器进行一些十分耗时的工作而我们又不需要时刻保持连接,这可怎么办?这时候就需要请出screen了。

GNU Screen是一个全屏窗口管理器,它在多个进程(通常是交互式shell)之间复用物理终端。当屏幕当前不可见时,甚至整个屏幕会话与用户终端分离时,Screen中运行的程序也会继续运行。

——Archlinux Wiki

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

GNU screen
screen属于大名鼎鼎的GNU

在Ubuntu系统上可以用apt来安装:

sudo apt install screen

常用命令:

#列出当前所有的session
screen -ls
#新建一个叫name的session
screen -S name
#回到name这个session
screen -r name
#停止name这个session
screen -X -S name quit

当你处于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 选定的内容贴上

更多信息可以参考: https://man.linuxde.net/screen

发表评论