linux下如何將一個(gè)進(jìn)程放入后臺(tái)執(zhí)行關(guān)閉終端后還不受影響?如何把工作窗口暫時(shí)共享給小伙伴做個(gè)操作?
你可能知道nohub XXX &,setsid XXX,disown?,甚至于你也用過screen,基本也就是這些。除此之外蟲蟲再給你介紹一款類似screen,但是更優(yōu)雅的工具Tmux,可以用做后臺(tái)任務(wù)執(zhí)行,也特別適合于碼農(nóng)做分屏開發(fā)調(diào)試,終端共享等。
關(guān)于tmux?
Tmux是終端多路復(fù)用器(terminal multiplexer)簡(jiǎn)稱,是GNU Screen的替代品。我們可以啟動(dòng)Tmux會(huì)話,然后在該會(huì)話中打開多個(gè)窗口,并且分屏形成矩形窗格,執(zhí)行不同操作?;静僮鞣绞胶痛蠹乙呀?jīng)熟悉的screen類似,唯一差異是Tmux中的所有命令都以前綴ctrl + b開頭。相對(duì)比screen是ctrl + a
Tmux的安裝
包管理器安裝
可以使用各大linux發(fā)行版的軟件包管理器一鍵安裝Tmux。
Debian系和Ubuntu:
sudo apt install tmux
Redhat系包括CentOS
yum install -y tmux
在macOS上安裝Tmux
brew install tmux
源碼安裝
Tmux也支持源碼安裝,具體方法:
Tmux源碼依賴libevent 2.x和ncurses需要提前安裝。然后從Tmux源碼倉(github: tmux/tmux)clone 一份源碼
git clone github:/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
Tmux使用方法
開啟Tmux 會(huì)話
要啟動(dòng)Tmux會(huì)話很簡(jiǎn)單,只需在控制臺(tái)中鍵入tmux。
tumx
就會(huì)打開一個(gè)新會(huì)話,會(huì)話包括一個(gè)新窗口并自動(dòng)啟動(dòng)一個(gè)shell。
進(jìn)入Tmux后,會(huì)在屏幕底部看到狀態(tài)行,會(huì)顯示有關(guān)當(dāng)前會(huì)話的信息。
現(xiàn)在可以運(yùn)行第一個(gè)Tmux命令。
例如,要查詢tumx所有命令的列表:
Ctrl + b ? (先按ctrl+b,然后輸入?)
創(chuàng)建命名Tmux會(huì)話(tmux new -s session_name)
默認(rèn)Tmux會(huì)話以數(shù)字命名。當(dāng)運(yùn)行多個(gè)tmux會(huì)話時(shí),為了管理方便,可以在啟動(dòng)時(shí)候添加名稱參數(shù),給會(huì)話命名。要?jiǎng)?chuàng)建一個(gè)命名會(huì)話,使用-s參數(shù)運(yùn)行:
tmux new -s session_name
比如命名一個(gè)名為chongchong的會(huì)話
注意命令會(huì)話窗口下面狀態(tài)欄,顯示已經(jīng)為"chongchong"了。
暫退Tmux會(huì)話(Ctrl + a d)
可以通過鍵入以下命令從Tmux會(huì)話中暫退并返回到正常的shell:
Ctrl + a d
從會(huì)話中暫退后,在Tmux會(huì)話中運(yùn)行的程序?qū)⒗^續(xù)運(yùn)行。
也可以通過直接用鼠標(biāo)關(guān)閉到整個(gè)終端窗口,這時(shí),tmux所在的shell進(jìn)程會(huì)消失。但是tmux會(huì)話不受影響,繼續(xù)任務(wù)執(zhí)行,也是暫退狀態(tài)。
注意要退出tmux,直接exit或者ctrl+d,就會(huì)退出tmux,返回原shell,這和一半的shell操作一樣。
返回Tmux會(huì)話(tmux attach-session)
如果要返回Tmux會(huì)話,你需要指定會(huì)話的名稱。如果你不指定會(huì)話名,tmux會(huì)返回到你最近使用的一個(gè)會(huì)話,這個(gè)有點(diǎn)智能,比screen強(qiáng),screen -r只能返回有一個(gè)會(huì)話的,而tmux attach-session多個(gè)會(huì)話,不指定也可以。
要返回到會(huì)話"chongchong",鍵入:
tmux attach-session -t chongchong
獲取Tmux會(huì)話列表(tmux ls)
要獲取當(dāng)前運(yùn)行所有會(huì)話的列表,使用命令
tmux ls
列表入下圖所示:
輸出的第一列為會(huì)話的名稱(比如0,2,chongchong);第二列為窗口數(shù)(比如會(huì)話0包括3個(gè)窗口);第三列為會(huì)話創(chuàng)建時(shí)間;最后為窗口大小。
Tmux會(huì)話新建窗口(Ctrl + a c)
默認(rèn)情況下,啟動(dòng)一個(gè)新的tmux會(huì)話時(shí),它會(huì)創(chuàng)建一個(gè)包含shell的窗口。我們可以通過Ctrl + a c新添加一個(gè)窗口,并自動(dòng)其分配0~9數(shù)字來表示??梢酝ㄟ^分屏在一個(gè)窗口展現(xiàn),或者通過ctrl+a w 選擇切換窗口
所有窗口的列表顯示在屏幕底部的狀態(tài)行中。
常見Tmux命令
Bellow是一些用于管理Tmux窗口和窗格的最常用命令:
?Ctrl + b c創(chuàng)建一個(gè)新窗口
?Ctrl + b w從列表中選擇窗口
?Ctrl + b 0切換到窗口0(根據(jù)編號(hào))
?Ctrl + b ,重命名當(dāng)前窗口
?Ctrl + b %將當(dāng)前窗格水平分割為兩個(gè)窗口
?Ctrl + b"將當(dāng)前窗格垂直拆分為兩個(gè)窗口
?Ctrl + b o轉(zhuǎn)到下一個(gè)窗口
?Ctrl + b ;在當(dāng)前窗口和上一窗口之間切換
?Ctrl + b x關(guān)閉當(dāng)前窗口
自定義配置Tmux(~/.tmux.conf)
啟動(dòng)Tmux時(shí),會(huì)檢測(cè)用戶目錄下的如果文件.tmux.conf(~/.tumx.conf),如果存在,則會(huì)從該文件讀取其配置參數(shù)。下面是一個(gè)tumx配置文件實(shí)例,其中包含自定義狀態(tài)行和一些其他選項(xiàng):
cat ~/.tmux.conf
# 顏色增強(qiáng)
set -g default-terminal 'screen-256color'
# 滾動(dòng)條為10000行
set -g history-limit 10000
# 改變狀態(tài)行顏色
set -g status-fg green
set -g status-bg black
基本Tmux流程和窗口共享
以下是開始使用Tmux的最基本步驟:
1.在命令提示符下,鍵入tmux new -s my_session,
2.運(yùn)行所需的程序。
3.使用鍵序列Ctrl-b + d從會(huì)話中分離(或者直接鼠標(biāo)關(guān)閉窗口)。
4.通知小伙伴,用同樣賬號(hào)登陸系統(tǒng)
5.鍵入tmux attach-session -t my_session,重新連接到Tmux會(huì)話。
如果自己使用,則用1,2,3,5,如果要和伙伴共享窗口則可以通過 1,2,3,4,5步驟。