<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一款超牛逼的 Linux 終端復(fù)用神器(附安裝、使用教程)

          共 11769字,需瀏覽 24分鐘

           ·

          2020-11-26 19:50

          公眾號(hào)關(guān)注杰哥的IT之旅”,

          選擇“星標(biāo)”,重磅干貨,第一時(shí)間送達(dá)!


          來(lái)源:

          https://www.cnblogs.com/kevingrace/p/6496899.html

          Tmux簡(jiǎn)介

          Tmux是一個(gè)優(yōu)秀的終端復(fù)用軟件,類(lèi)似GNU Screen,但來(lái)自于OpenBSD,采用BSD授權(quán)。使用它最直觀的好處就是,通過(guò)一個(gè)終端登錄遠(yuǎn)程主機(jī)并運(yùn)行tmux后,在其中可以開(kāi)啟多個(gè)控制臺(tái)而無(wú)需再“浪費(fèi)”多余的終端來(lái)連接這臺(tái)遠(yuǎn)程主機(jī)。是BSD實(shí)現(xiàn)的Screen替代品,相對(duì)于Screen,它更加先進(jìn):支持屏幕切分,而且具備豐富的命令行參數(shù),使其可以靈活、動(dòng)態(tài)的進(jìn)行各種布局和操作。

          Tmux 可用于在一個(gè)終端窗口中運(yùn)行多個(gè)終端會(huì)話。不僅如此,還可以通過(guò) Tmux 使終端會(huì)話運(yùn)行于后臺(tái)或是按需接入、斷開(kāi)會(huì)話,這個(gè)功能非常實(shí)用。

          Tmux的使用場(chǎng)景

          • 1)可以某個(gè)程序在執(zhí)行時(shí)一直是輸出狀態(tài),需要結(jié)合nohup、&來(lái)放在后臺(tái)執(zhí)行,并且ctrl+c結(jié)束。這時(shí)可以打開(kāi)一個(gè)Tmux窗口,在該窗口里執(zhí)行這個(gè)程序,用來(lái)保證該程序一直在執(zhí)行中,只要Tmux這個(gè)窗口不關(guān)閉

          • 2)公司需要備份數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)量巨大,備份兩三天弄不完,這時(shí)不小心關(guān)閉了終端窗口或誤操作就前功盡棄了,使用Tmux會(huì)話運(yùn)行命令或任務(wù),就不用擔(dān)心這些問(wèn)題。

          • 3)下班后,你需要斷開(kāi)ssh或關(guān)閉電腦,將運(yùn)行的命令或任務(wù)放置后臺(tái)運(yùn)行。

          • 4)關(guān)閉終端,再次打開(kāi)時(shí)原終端里面的任務(wù)進(jìn)程依然不會(huì)中斷

          Tmux功能

          • 提供了強(qiáng)勁的、易于使用的命令行界面

          • 可橫向和縱向分割窗口

          • 窗格可以自由移動(dòng)和調(diào)整大小,或直接利用四個(gè)預(yù)設(shè)布局之一

          • 支持 UTF-8 編碼及 256 色終端

          • 可在多個(gè)緩沖區(qū)進(jìn)行復(fù)制和粘貼

          • 可通過(guò)交互式菜單來(lái)選擇窗口、會(huì)話及客戶端

          • 支持跨窗口搜索

          • 支持自動(dòng)及手動(dòng)鎖定窗口

          Tmux安裝

          ubuntu版本下直接apt-get安裝

          # sudo apt-get install tmux

          centos7版本下直接yum安裝

          # yum install -y tmux

          Centos6 編譯安裝 tmux官網(wǎng)下載地址:http://tmux.github.io/

          # yum install libevent libevent-devel ncurses-devel
          # tar -zvxf tmux-2.3.tar.gz                      (提前下載:wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz)
          # cd tmux-2.3
          # ./configure
          # make && make install

          1)make編譯tmux時(shí),可能出現(xiàn)的錯(cuò)誤

          control.c: In function ‘control_callback’:
          control.c:63: warning: implicit declaration of function ‘evbuffer_readln’
          control.c:63error: ‘EVBUFFER_EOL_LF’ undeclared (first use in this function)
          control.c:63error: (Each undeclared identifier is reported only once
          control.c:63errorfor each function it appears in.)
          control.c:63: warning: assignment makes pointer from integer without a cast
          make: *** [control.o] Error 1

          原因:使用的libevent的版本太低造成的,tmux1.8要求libevent>= 2.0.10-stable

          解決辦法:

          # yum remove libevent libevent-devel      //先卸載yum安裝的libevent
          # rpm -qa|grep libevent          //確保已經(jīng)卸載

          到http://libevent.org/里面下載最新版的libevent

          # tar -zvxf libevent-2.0.21-stable.tar.gz      (提前下載:wget https://cloud.github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz)
          # cd libevent-2.0.21-stable
          # ./configure
          # make && make install
          # ll /usr/local/lib/libevent.so

          然后再接著make編譯tmux就順利通過(guò)了~~

          2)運(yùn)行tmux可能出現(xiàn)的錯(cuò)誤:

          tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

          解決辦法:建立相應(yīng)的軟鏈接

          32bit系統(tǒng)
          # ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
          64bit系統(tǒng)
          # ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

          在Mac OS中安裝

          安裝 Homebrew

          $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

          安裝tmux

          $ brew install tmux

          Tmux的使用

          安裝完成后輸入命令tmux即可打開(kāi)軟件,界面十分簡(jiǎn)單,類(lèi)似一個(gè)下方帶有狀態(tài)欄的終端控制臺(tái);但根據(jù)tmux的定義,在開(kāi)啟了tmux服務(wù)器后,會(huì)首先創(chuàng)建一個(gè)會(huì)話,而這個(gè)會(huì)話則會(huì)首先創(chuàng)建一個(gè)窗口,其中僅包含一個(gè)面板;也就是說(shuō),這里看到的所謂終端控制臺(tái)應(yīng)該稱作tmux的一個(gè)面板,雖然其使用方法與終端控制臺(tái)完全相同。

          # tmux               //直接進(jìn)入面板,如下使用效果:


          Tmux的快捷鍵使用說(shuō)明

          需要注意:進(jìn)入tmux面板后,一定要先按ctrl+b,然后松開(kāi),再按其他的組合鍵才生效。

          常用到的幾個(gè)組合鍵

          ctrl+b ?            顯示快捷鍵幫助
          ctrl+b 空格鍵       采用下一個(gè)內(nèi)置布局,這個(gè)很有意思,在多屏?xí)r,用這個(gè)就會(huì)將多有屏幕豎著展示
          ctrl+b !            把當(dāng)前窗口變?yōu)樾麓翱?br>ctrl+b  "           模向分隔窗口
          ctrl+b %            縱向分隔窗口
          ctrl+b q            顯示分隔窗口的編號(hào)
          ctrl+b o            跳到下一個(gè)分隔窗口。多屏之間的切換
          ctrl+b 上下鍵      上一個(gè)及下一個(gè)分隔窗口
          ctrl+b C-方向鍵    調(diào)整分隔窗口大小
          ctrl+b &           確認(rèn)后退出當(dāng)前tmux
          ctrl+b [           復(fù)制模式,即將當(dāng)前屏幕移到上一個(gè)的位置上,其他所有窗口都向前移動(dòng)一個(gè)。
          ctrl+b c           創(chuàng)建新窗口
          ctrl+b n           選擇下一個(gè)窗口
          ctrl+b l           最后使用的窗口
          ctrl+b p           選擇前一個(gè)窗口
          ctrl+b w           以菜單方式顯示及選擇窗口
          ctrl+b s           以菜單方式顯示和選擇會(huì)話。這個(gè)常用到,可以選擇進(jìn)入哪個(gè)tmux
          ctrl+b t           顯示時(shí)鐘。然后按enter鍵后就會(huì)恢復(fù)到shell終端狀態(tài)
          ctrl+b d           脫離當(dāng)前會(huì)話;這樣可以暫時(shí)返回Shell界面,輸入tmux attach能夠重新進(jìn)入之前的會(huì)話

          tmux的常規(guī)運(yùn)維命令

          新建會(huì)話,比如新創(chuàng)建一個(gè)會(huì)話以"ccc"命名

          tmux new -s ccc

          加上參數(shù)-d,表示在后臺(tái)新建會(huì)話

          root@bobo:~# tmux new -s shibo -d
          root@bobo:~# tmux ls
          shibo: 1 windows (created Tue Oct  2 19:22:32 2018) [135x35]

          查看創(chuàng)建得所有會(huì)話

          [root@Centos6 ~]# tmux ls
          0: 1 windows (created Wed Aug 30 17:58:20 2017) [112x22](attached)    #這里的attached表示該會(huì)話是當(dāng)前會(huì)話
          aaa: 2 windows (created Wed Aug 30 16:54:33 2017) [112x22]
          ccc: 1 windows (created Wed Aug 30 17:01:05 2017) [112x22]

          登錄一個(gè)已知會(huì)話。即從終端環(huán)境進(jìn)入會(huì)話。第一個(gè)參數(shù)a也可以寫(xiě)成attach。后面的aaa是會(huì)話名稱。

          [root@Centos6 ~]# tmux a -t aaa 

          退出會(huì)話不是關(guān)閉:

          • 登到某一個(gè)會(huì)話后,依次按鍵ctrl-b + d,這樣就會(huì)退化該會(huì)話,但不會(huì)關(guān)閉會(huì)話。

          • 如果直接ctrl + d,就會(huì)在退出會(huì)話的通話也關(guān)閉了該會(huì)話!關(guān)閉會(huì)話(銷(xiāo)毀會(huì)話)

          [root@Centos6 ~]tmux ls
          aaa: 2 windows (created Wed Aug 30 16:54:33 2017) [112x22]
          bbb: 1 windows (created Wed Aug 30 19:02:09 2017) [112x22]

          [root@Centos6 ~]tmux kill-session -t bbb

          [root@Centos6 ~]tmux ls
          aaa: 2 windows (created Wed Aug 30 16:54:33 2017) [112x22]

          重命名會(huì)話

          [root@Centos6 ~]tmux ls  
          wangshibo: 1 windows (created Sun Sep 30 10:17:00 2018) [136x29] (attached)

          [root@Centos6 ~]tmux rename -t wangshibo kevin

          [root@Centos6 ~]tmux ls
          kevin: 1 windows (created Sun Sep 30 10:17:00 2018) [136x29] (attached)

          tmux的遠(yuǎn)程批量操作的shell腳本

          在使用SSH或telnet遠(yuǎn)程連接服務(wù)器時(shí),可能都遇到為一些長(zhǎng)時(shí)間運(yùn)行的任務(wù)而頭疼,比如系統(tǒng)備份、ftp 傳輸?shù)鹊取MǔG闆r下我們都是為每一個(gè)這樣的任務(wù)開(kāi)一個(gè)遠(yuǎn)程終端窗口,因?yàn)樗麄儓?zhí)行的時(shí)間太長(zhǎng)了。必須等待它執(zhí)行完畢,在此期間可不能關(guān)掉窗口或者斷開(kāi)連接,否則這個(gè)任務(wù)就會(huì)被殺掉,一切半途而廢了。也許nohup命令可以達(dá)到這個(gè)目的,如果程序的標(biāo)準(zhǔn)輸出/標(biāo)準(zhǔn)錯(cuò)誤是終端, nohup默認(rèn)將其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信號(hào),還需要使用標(biāo)記&把它放在后臺(tái)運(yùn)行。

          nohup <command> [argument…] &

          雖然nohup很容易使用,但還是比較“簡(jiǎn)陋”的,對(duì)于簡(jiǎn)單的命令能夠應(yīng)付過(guò)來(lái),對(duì)于復(fù)雜交互的程序就麻煩了。

          使用tmux打開(kāi)一個(gè)終端窗口,可以在窗口里執(zhí)行一個(gè)長(zhǎng)時(shí)間運(yùn)行的交互式命令操作,令其一直在后臺(tái)跑著,并且在按鍵ctrl-b-d后,可以無(wú)感知的退出窗口,而退出后窗口不會(huì)關(guān)閉,即窗口里執(zhí)行的交互命令也不會(huì)結(jié)束。這比起傳統(tǒng)的"nohup commang & (然后按ctrl+c)"的方式要還用很多。

          如何在linux終端里創(chuàng)建一個(gè)tmux窗口的同時(shí)直接在窗口終端里執(zhí)行命令呢?這就需要用到tmux send -t session_name "command" ENTER!!!

          示例一

          root@bobo:~# tmux new -d -s kevin_session && tmux send -t kevin_session '/usr/local/bin/main' ENTER && tmux attach -t kevin_session
          [detached (from session kevin_session)]

          root@bobo:~# tmux ls
          kevin_session: 1 windows (created Tue Oct  2 19:38:36 2018) [135x34]

          上面的命令可以拆分為下面三個(gè):

          root@bobo:~# tmux new -d -s kevin_session
          root@bobo:~# tmux send -t kevin_session '/usr/local/bin/main' ENTER
          root@bobo:~# tmux attach -t kevin_session

          解釋說(shuō)明:上面涉及到三個(gè)命令

          • 第一個(gè)表示:在后臺(tái)創(chuàng)建一個(gè)窗口,名為kevin_session

          • 第二個(gè)表示:創(chuàng)建窗口的同時(shí)在終端里執(zhí)行命令'/usr/local/bin/main',這里用單引號(hào)或雙引號(hào)都可以。

          • 第三個(gè)表示:進(jìn)入到剛才創(chuàng)建的窗口kevin_session里面去

          示例二

          在創(chuàng)建窗口的同時(shí),可以同時(shí)在窗口終端里連續(xù)執(zhí)行兩個(gè)或多個(gè)命令

          root@bobo:~# su - kevin -c "tmux new -d -s haha && tmux send -t haha 'ifconfig' ENTER && tmux send -t haha 'hostname' ENTER"
          kevin_session: 1 windows (created Tue Oct  2 19:38:36 2018) [135x34]
          root@bobo:~# su - kevin
          kevin@bobo:~$ tmux ls
          haha: 1 windows (created Tue Oct  2 19:48:12 2018) [135x34]
          kevin@bobo:~$ tmux a -t haha

          如下一個(gè)實(shí)例:

          在遠(yuǎn)程進(jìn)行tmux的批量關(guān)閉和批量開(kāi)啟的shell腳本操作

          1)批量關(guān)閉/opt/ip.list文件里ip所在機(jī)器的main二進(jìn)制進(jìn)程(這個(gè)main進(jìn)程是在tmux執(zhí)行的,一直交互執(zhí)行的那種)

          [root@shell002 ~]# vim /opt/script/6_main_stop.sh
          #!/bin/bash
          for i in $(cat /opt/ip.list)
          do
          ssh -p22 root@$i 'ps -ef|grep main|grep -v grep|awk -F" " "{print $2}"|xargs kill -9 >/dev/null 2>&1'
          done

          2)批量開(kāi)啟/opt/ip/list文件里ip所在機(jī)器的tmux窗口里的main二進(jìn)制進(jìn)程(即先關(guān)閉tmux,再創(chuàng)建tmux窗口以及在里面執(zhí)行main進(jìn)程)

          [root@shell002 ~]# vim /opt/script/7_main_start.sh
          #!/bin/bash
          for i in $(cat /opt/ip.list)
          do
          ssh -p22 root@$i 'ps -ef|grep tmux|grep -v grep|awk -F" " "{print $2}"|xargs kill -9 >/dev/null 2>&1'
          ssh -p22 root@$i 'tmux new -d -s kevin_session && tmux send -t kevin_session '/usr/local/bin/main' ENTER'
          done

          如果您覺(jué)得這篇文章對(duì)您有點(diǎn)用的話,麻煩您為本文來(lái)個(gè)四連:轉(zhuǎn)發(fā)分享、點(diǎn)贊、點(diǎn)在看、留言,因?yàn)檫@將是我寫(xiě)作與分享更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!


          本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)「m」獲取!

          推薦閱讀:

          1、4 款超級(jí)好用的終端文件管理器,提高你的使用效率!
          2、Linux用戶必須知道的常用終端快捷鍵
          3、GitHub 神器:寫(xiě)代碼、搜問(wèn)題,全部都在「終端」完成!
          4、Linux 終端下記不住命令的使用方法?這個(gè)開(kāi)源項(xiàng)目幫你解決。
          5、12 款 Linux 終端推薦
          關(guān)注微信公眾號(hào)「杰哥的IT之旅」,后臺(tái)回復(fù)「1024」查看更多內(nèi)容,回復(fù)「加群備注:地區(qū)-職業(yè)方向-昵稱 即可加入讀者交流群。

               
                 
          點(diǎn)個(gè)[在看],是對(duì)杰哥最大的支持!


          瀏覽 72
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  av影音先锋亚洲第一 | 无码蜜桃 吴梦梦 | 国内精品久久久久久久久变脸 | 丁香五月天婷婷激情网 | 婷婷五月综合久久中文字幕 |