使用 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 做爲默認終端跑點程序,用不到這個因此就不去花時間去學這個了,更多內容請參考:

相關文章
相關標籤/搜索