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