最近因爲疫情緣由不能返校,只能經過 SSH
遠程連接學校的電腦和服務器跑程序。可是使用 SSH
進行遠程終端操做時,會將每次 SSH
鏈接的會話 (session) 與進程進行綁定。當關閉或者斷開 SSH
連接時,正在運行的進程也會隨之終止。這種問題可經過使用 screen
或 tmux
,將 SSH
中的進程調到後臺運行進行解決。html
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
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
做爲默認終端跑點程序,用不到這個因此就不去花時間去學這個了,更多內容請參考: