tmux SSH神器


https://www.ruanyifeng.com/blog/2019/10/tmux.html

http://louiszhai.github.io/2017/09/30/tmux/

https://blog.csdn.net/qq_38649880/article/details/88770009

 

 

tmux簡介

tmux就可以很好的解決當ssh斷開的時候程序死掉的問題,這個只是tmux的一個應用,tmux是一個很好的終端復用工具。
先安裝,Ubuntu安裝很方便。

sudo apt install tmux

tmux有幾個概念簡單說一下,有關tmux的詳細介紹百度。
tmux首先有一個回話的概念,類似於一個工作空間的感覺,就是你運行tmux的時候就是先建立一個會話,然后在會話里面運行。
輸入下面的命令建立一個會話。

tmux new -s uav

new就是新建一個會話的意思,-s就是會話的簡寫,后面是會話的名字。
這個時候你會發現,進入了一個不一樣的命令行界面,這個界面和正常的終端環境沒有任何區別,唯一不一樣的地方就是,這個終端里面運行的所有程序,只要你不關電,程序就會一直運行,而且你當你ssh斷開再重新連上的時候會接着以前的地方。
現在你可以直接關掉這個窗口試一下。
用下面的命令可以查看當前存在的會話

tmux ls

在我的電腦上輸出了下面的結果

dck@dck-HP-Notebook:~$ tmux ls
uav: 1 windows (created Thu Apr  4 20:48:53 2019) [101x59]

剛剛我們新建了一個名為uav的會話,可以我們發現它還在。我們現在重新連接一下。

tmux a -t uav

我們又連接到了剛才斷開的地方,界面沒有一點變化。
如果我們想要退出tmux環境到正常的終端環境的話我們只需要依次輸入Ctrl/Command + B
然后再按一下D,在tmux里面Ctrl/Command + B是一個前綴鍵,要先按這個組合才可以激活tmux的快捷鍵。這個鍵如果覺得不方便的話后面也可以自己改。
現在你可以隨意的運行程序,感受一下tmux。
下面問題來了,我怎么運行多個命令。不可能每個命令都新開一個會話吧。下面就要介紹tmux的下幾個名稱窗口和窗格。
輸入Ctrl/Command + B
然后再按一下C就新建了一個窗。

 

 

在左下角可以看到有0、1兩窗。我們可以新建很多個窗運行命令。
那個星號標示當前選中的窗。
輸入Ctrl/Command + B
然后再按一下N切換到下一個窗
輸入Ctrl/Command + B
然后再按一下P切換到上一個窗
輸入Ctrl/Command + B
然后再按一下&刪除當前的窗,會提示你是否刪除,輸入y回車就可以刪除當前的窗,所有窗都刪除完后,tmux的會話也就沒了。
到這里還有一個問題,能不能不建窗,在一個窗里面分多個區域出來運行命令,答案肯定是可以的。把一個窗分為多個窗口就OK了。
輸入Ctrl/Command + B
然后再按一下%把窗口豎直切割一下。
輸入Ctrl/Command + B
然后再按一下“把窗口水平切割一下。
通過這種方式就可以分多個區域,瞬間變得方便起來。
輸入Ctrl/Command + B
然后再結合方向鍵可以選擇窗格。綠色的框代表當前的選中的窗。
輸入Ctrl/Command + B
然后再按一下X就把當前的窗關閉了,一樣的確認輸入y回車就可以。
以上就是tmux的基本用法,掌握上面的快捷鍵和命令就可以滿足日常的使用需求了。
tmux作為一個優秀的終端工具,還有很多東西。

建立腳本

每次我們都會面臨一個很麻煩的問題,先新建一個tmux會話然后在分好幾個窗格,然后再輸入一大堆命令。為了解決這個麻煩又重復的問題,我們用腳本來解決這個問題。、
新建一個腳本

vim tmux_uav.sh
#gnome-terminal -x bash -c "roscore"
 #!/bin/bash 

tmux new-session -d -s uav  ;
 
tmux split-window -h 
tmux select-pane -t 0  
# 1cmd
tmux send-keys "roscore" C-m 



tmux split-window -v   
tmux select-pane -t 1
# 2cmd
tmux send-keys "sleep 10s" C-m 
tmux send-keys "roslaunch mavros px4.launch" C-m 



tmux select-pane -t 2
# 3cmd
tmux send-keys "sleep 25s" C-m 


tmux split-window -v  
tmux select-pane -t 3

# 4cmd
tmux send-keys "sleep 30s" C-m 
tmux send-keys "roslaunch cartographer_ros hokuyo_2d.launch" C-m


tmux -2 attach-session -t uav 

在相應的地方修改要在這個窗格輸入的命令就可以了。如果命令之間有時間間隔要求就用sleep多少秒sleep一下。
保存退出過后給這個腳本執行的權限。

chmod a+x tmux_uav.sh

然后我們就可以正常運行這個腳本了

~/tmux_uav.sh

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM