2

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

1. screen 的使用

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

安装 screen 工具:

$ sudo apt-get install screen

创建 screen 会话:

$ screen -S <session-name>

然后就会直接进入 screen 会话中,然后:

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

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

$ 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 会话。同时也可以使用:

$ screen -x <session-name>

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

$ 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 工具:

$ sudo apt-get install tmux

创建 screen 会话:

$ 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 作为默认终端跑点程序,用不到这个所以就不去花时间去学这个了,更多内容请参考:


敖亦乐
21 声望2 粉丝