使用 screen 和 tmux 进行远程终端会话管理

最近因为疫情缘由不能返校,只能经过 SSH 远程连接学校的电脑和服务器跑程序。可是使用 SSH 进行远程终端操做时,会将每次 SSH 链接的会话 (session) 与进程进行绑定。当关闭或者断开 SSH 连接时,正在运行的进程也会随之终止。这种问题可经过使用 screentmux,将 SSH 中的进程调到后台运行进行解决。html

1. screen 的使用

$ screen -S <session-name>          # 建立会话
$ <ctrl+a ctrl+d>                   # 临时离开
$ exit                              # 关闭会话
$ screen -ls                        # 列出全部
$ screen -r <session-name>          # 进入会话
$ screen -r <session-name> -X quit  # 外部关闭

安装 screen 工具:shell

$ sudo apt-get install screen

建立 screen 会话:windows

$ screen -S <session-name>

而后就会直接进入 screen 会话中,而后:服务器

  • 执行 exit 指令将退出并关闭这个会话;
  • 使用 ctrl+a ctrl+d 组合快捷键临时离开这个会话;

可以使用 screen -ls 指令查看当前有哪些会话在运行:session

$ screen -ls
There are screens on:
    515300.sc0    (2020年05月01日 23时27分48秒)    (Detached)
    514105.sc1    (2020年05月01日 23时27分43秒)    (Detached)
2 Sockets in /run/screen/S-aoyile.

而后可以使用:工具

$ screen -r <session-name>

再次进入这个 screen 会话。同时也可使用:ui

$ screen -x <session-name>

screen 会话进行同步。另外 从外部关闭一个 screen 会话code

$ screen -r <session-name> -X kill

2. tmux 的使用

$ tmux new -s <session-name>           # 建立会话
$ <ctrl+b d>                           # 临时离开
$ exit / <ctrl+d>                      # 关闭会话
$ tmux ls                              # 列出全部
$ tmux attach -t <session-name>        # 进入会话
$ tmux switch -t <session-name>        # 切换会话
$ tmux kill-session -t <session-name>  # 外部关闭

若是容许的话,能够考虑支持多窗口和指令更为直观的 tmux。安装 tmux 工具:htm

$ sudo apt-get install tmux

建立 screen 会话:blog

$ tmux new -s <session-name>

而后就会直接进入 tmux 会话中,而后:

  • 使用 ctrl+d 或者执行 exit 指令将退出并关闭这个会话;
  • 使用 ctrl+b d 组合快捷键(注意是先按下 ctrl+b 而后再只按 d,必定记得中间要松开 ctrl)或者执行 tmux detach临时离开这个会话;

可以使用 tmux ls 指令查看当前有哪些会话在运行:

$ tmux ls
tm1: 1 windows (created Sat May  2 00:00:00 2020)
tm2: 1 windows (created Sat May  2 00:00:10 2020)

而后可以使用:

$ tmux attach -t <session-name>

再次进入这个 tmux 会话。同时也可使用:

$ tmux switch -t <session-name>

从一个 tmux 会话切换到另外一个 tmux 会话里。另外 从外部关闭一个 tmux 会话

$ tmux kill-session -t <session-name>

tmux 的另外一个强大之处是支持多个 pane 的多个终端,这个可能在纯文本终端环境下颇有用。本身主要是在 GUI 里使用 terminator 做为默认终端跑点程序,用不到这个因此就不去花时间去学这个了,更多内容请参考:

相关文章
相关标签/搜索