日期:2014-05-16  浏览次数:20766 次

linux下远程管理利器-tmux

在使用无论哪种软件远程管理linux的时候,我们总会遇到一个靠那个软件本身所不能解决的问题:由于网络不稳定造成的连接中断!之前笔者也有遇到过,但是由于笔者的网络环境还好,所以算不上什么大问题.之前当遇到要长时间运行的指令的时候,笔者也会习惯上用screen来运行,然后退出会话.当ssh命令没有标签的概念的时候,笔者迫不及待的希望有一种解决方式解决这种问题.虽然笔者用的是GNOME Terminal它有标签的概念,而且通过自定义的快捷键启动GNOME Terminal和通过GNOME Terminal的快捷键ctrl+shift+T创建一个新标签是件很快捷的事儿.但是创建完了不是还要再输入登陆的指令嘛.如果有更简单高效的方式解决这个问题,你愿不愿意尝试呢?我愿意!
?? ? ?在搜索screen的相关资料的时候,一个和screen类似功能的新秀进入笔者的眼帘:tmux!对于笔者来说,两个软件都是要重新学习才能充分运用,所以在学习成本上不存在差别.而且笔者最看中的是tmux有"窗口"的概念,可以很方便的创建新的窗口和在窗口中切换.虽然screen在修改配置文件以后,也可以实现这个功能,但是!但是要修改配置文件!如果后面有N多机器的情况下,虽然批量修改也花费不了多少时间,但始终是一种损耗.在使用tmux的过程中,笔者认真学习了tmux内置的快捷键.笔者认为,这样的快捷键定义还是比较科学的,另外使用内置的快捷键而不是自定义的好处就是,你不用到每台机器上以后都重新定义你的习惯.
?? ? ?其实本篇就是tmux的入门级介绍啦,当然是偏快捷键.因为现在tmux的资料还是少之又少.为了知道其实一些有用的功能点,笔者也是破费心机.能够看到这篇关于tmux详细介绍的中文资料,相信你已经对tmux已经有一定的了解了.还是提一句:tmux是一个远程管理多窗口的工具,它可以允许你在一次登陆的情况下打开多个会话并方便的在会话中切换,而且软件本身就可以解决网络不稳定造成的断网问题哟.ok,进入本次的奇妙之旅:
?? ? ?1.控制键
?? ? ?控制键就是tmux的主键.当你在tmux环境下按下这个键的时候,tmux就会把你后面输入的指令,解析成它内置的功能.tmux默认的控制键是ctrl+b(同时按下ctrl和b,在后面将直接用小写的c-b代替).这相当于screen的ctrl+a.同时用过两个工具的人总会争论ctrl+a和ctrl+b的合理性.估计争论的也就是emacs和vi党.我就很不理解.这两拨人只用编辑器,不用指令吗?因为他们似乎不知道在bash环境里:ctrl+a代表跳到命令的开始,而ctrl+b代表往回移动一格.从这一点讲,笔者觉得用c-b没啥不好的.因为你按着c-b不放,在bash环境里的功能依然有效:)
?? ? ?2.获取快捷键帮助
?? ? ?前面没有提,在这里要指出的一点就是,当你按c-b的时候,我希望你已经进入"tmux环境"了.进入的方法很简单.直接在命令行输入:tmux就可以了.没有的话,安装呗.幸运的是ubuntu9.10里已经集成了tmux.虽然不是最新版,但是免去了编译的麻烦:)现在按C-b ?
?? ? ?接下来要介绍的东西,就是这里面列出来的,一些普遍有用的东东.查看上面或者下面的内容,直接pageup,pagedown就可以了:)退出请按q(这个百试不爽,几乎是和tmux交互的时候,都可以用这个退出)
?? ? ?3.常用快捷键
?? ? ?c-b c 创建一个新的窗口
?? ? ?在你正后悔当前窗口被一个指令占用的时候,这个快捷键会解燃眉之急哟.当前窗口在任务栏会显示*
?? ? ?如上图,现在正在操作的窗口就是3了
?? ? ?C-b n 切换到下一个窗口
?? ? ?C-b p 切换到上一个窗口
?? ? ?C-b l 最后一个窗口,和上一个窗口的概念不一样哟,谁试谁知道
?? ? ?c-b w 通过上下键选择当前窗口中打开的会话
?? ? ?C-b 数字 直接跳到你按的数字所在的窗口
?? ? ?c-b & 退出当前窗口(个人觉得这个没多大用,因为笔者习惯上c-d退出bash.当然了,如果你确保其它窗口没有有用的程序正在运行,试试这个命令也不错)
?? ? ?C-b d 临时断开会话 断开以后,还可以连上的哟:)
?? ? ?4.分割窗口
?? ? ?vim中,可以直接:!命令,来执行命令,或者直接把命令的结果读到当前的编辑器.很多时候我们就是有这样一种需要,看一下上次的执行结果,而不想通过切换来实现.最初看到官方网站的图片可以,横着分,可以竖着分,挺酷的.不过到现在笔者也还不知道怎么紧着分:)
?? ? ?c-b " 分割出来一个窗口
?? ? ?c-b o 在小窗口中切换 这种方法一次只能切换一次,再想切换再c-b o,适合两个窗口的时候使用.如果在当前窗口分割了好多小窗口的话,就要用下面的两个指令了.
?? ? ?c-b (方向键)上 上一个窗口
?? ? ?c-b (方向键)下 下一个窗口 ?要指出的是,按一次c-b,可以上上下下的选,直到选到你想要的那个窗口,这点和c-b o不一样噢.
??