Linux 終端複用器tmux,實現任務後臺執行,即會話不間斷,踩坑及使用要點記錄

dirgo發表於2024-05-20

1.同型別的還有比較老screen命令,tmux功能更多

2.解決的問題

比如 正在 終端ssh連線到伺服器執行一個安裝或打包任務,過程很長,期間不能中斷,情況1:你想執行其他命令需要再開一個終端

情況2:網路不穩定斷聯,任務會失敗,就需要重新執行;

情況3:你到點下班了,任務還在執行,晚上公司會斷電,所以你電腦也要關,關閉了終端,前臺執行的任務就沒法繼續

3.將任務置於後臺的一些命令和方法,只能在當前session,斷開或關閉session終端後臺任務也會關閉,比如:

執行命令時,在命令後加 &,命令就會後臺執行,例子: sleep 600 &

命令已經在執行中,則按ctrl + Z 鍵,則命令轉到後臺並暫停,用jobs -l可檢視任務和編號,用 bg %編號 將任務置於後臺,用 fg %任務編號將任務轉到前臺

4.真正可以實現需求的命令或工具

4.1 nohup xxxx &

nohup 含義即忽略終端推出時給本次session所有任務傳送的終止訊號,非常簡單直接,缺點就是關閉終端,下次再連線只能從 程序裡查詢和操作任務了

4.2 screen

一個工具,歷史久遠,是第一批GUN專案裡的,所以老的發行版基本都帶,新的有的不帶,只是上面需求已經夠用

4.3 tmux(推薦),與screen類似,但是功能更多,使用更友好,進入後在底部會有一個底欄提示當前所在的 session,window(視窗),pane(窗格)

常用命令:

新建會話: tmux new -s <session-name>

分離會話:tmux detach 或者快捷鍵:ctrl+b 鬆開 再按d

檢視當前所有會話: tmux ls

-------------------------------------------------------------------------------

接入會話: tmux attach(或者a) -t <session-name>(或者編號如0)

殺死會話:tmux kill-session -t <session-name>

-----------------------------------------------------

上面兩個我一般不用,而是直接 tmux a,連線上次最後關閉的會話,然後使用快捷鍵 ctrl+b 鬆開再按 w,即展示所有視窗,再使用方向鍵選擇需要進入的會話或視窗,如果需要關閉會話使用ctlr+d逐個關閉所有視窗

建立新視窗:ctrl +b 鬆開再按 c

視窗重新命名:ctrl+b 鬆開再按 ,(逗號)

重新命名會話:ctrl+b $

--------------------

窗格相關:

劃分左右窗格:ctrl+b %

劃分上下兩個窗格:CTRL+b "

參考文章:

Linux :忘記使用nohup該如何補救 - 羅西的思考 - 部落格園

Linux配置程式後臺執行(前後臺來回切換)_linux後臺執行程式-CSDN部落格

程序、前後臺、服務與例行性任務 - Linux 101

Tmux 使用教程 - 阮一峰的網路日誌

Tmux使用手冊 | louis blog

相關文章