Tmuxinatorによる複雑な端末流の自動化


Sai Kiran AnaganiUnsplashによる写真
私は、少なくとも5つの端末を含む大きな電子商取引プロジェクトに取り組んでいました.先頭と先頭の端を回転させる、データベースとローカル環境は、正確な順序でコマンドのかなりの量を覚えて、2〜3分の間を完了する必要があります.私は1日1回、50週間の週5日:それは多くのように思われません:それはマニュアル作業の〜8時間です.私はいくつかのbashスクリプトを使用することについて考えました、そして、私がTmuxとTmuxinatorを発見した時です.

トムックス


tmuxは端末マルチプレクサを表します.それはあなたが1つの端末の中のいくつかのプログラムの間で切り替わることができます.これは、複数のプログラムとシェルの1つの端末では、Windowsマネージャのように動作します.リモートサーバにインストールされている場合、TMUXはリモート接続を保護します.それは、SSH、パテと他の接続に理想的です.プログラムは多くのローカルコンピュータによってリモートでアクセスできます.
まずインストールしましょう.
# Ubuntu and Debian based distros
sudo apt install tmux

# CentOS and Fedora
sudo yum install tmux

# macOS
brew install tmux

トクシンネータ


TMUXは、多くのトラブルを保存することができます偉大で強力なツールですが、すべてはまだマニュアルです.幸いにも、TMUXは素晴らしく自動化可能です、そして、それはTmuxinatorが光るところです.
tmuxinatorは、TMUXでセッションの作成を自動化するツールです.YAMLファイルを開く新しいプロジェクトを作成します.このファイルでは、ウィンドウとパンの数とレイアウトを指定します.tmux実行のある時点でコマンドを実行するフックがたくさんあります.
tmuxコマンドを入力したかのように実行します.次のコマンドを実行する前にコマンドを終了します.これは、次のコマンドを実行するには、SSH接続を待つのに最適です.
インストールしましょう
# Ubuntu and Debian based distros
sudo apt-get install tmuxinator

# Fedora
gem install tmuxinator

# macOS
brew install tmuxinator
すべてのコマンドに対して名前を書く必要がないので、tmuxinatorのエイリアスを設定します.
# .bashrc/.zshrc/.*rc
alias mux="tmuxinator"
新しいTmuxinatorプロジェクトを作成するには、新しいコマンドを使用します
tmuxinator new MyProject
すべてのTMuxinatorコマンドを1文字に短縮することができます.我々の別名で、コマンドは単にそうです
mux n MyProject
これは、我々が自動化されるすべての流れを置くYAMLファイルをつくります.私は、YAMLファイルを編集しながら、物事を簡単にし、一歩を忘れないように、リアルタイムであなたのプロジェクトのマニュアル設定を行うことをお勧めします.
私のローカルdev env用の実際のプロジェクトを見てみましょう.
name: myproject
root: ~/

startup_window: vagrant and docker-git

startup_pane: 1

# The first level is the list of windows. 
windows:
  # Second level is each window name. Each element use a -

  # Commands can be specified inline 
  - ide: /usr/local/pycharm-2020.1.3/bin/pycharm.sh 

  - watchers:
      # 3rd level is the window options
      # layout option is how the panes appear in a windows
      layout: even-horizontal                             

      # List of panes inside a window. Each is named              
      panes:                  
        - vendor watcher:
          # 4th level is a list of commands to execute
          - j myproject-app         
          - clear
          - npm run watch:vendor
        - customer watcher:
          - j myproject-app         # zsh jump plugin
          - clear             
          - npm run watch:customer
  - vagrant and docker-git:
      layout: even-vertical
      panes:
        - vagrant:
          - j MyProjectFiles
          - clear
          - workon MyProject
          - vagrant up
          # this command takes time and tmuxinator 
          # waits before executing the next one
          - vagrant ssh      
          - source /usr/local/virtualenvs/myproject374/bin/activate
          - cd /srv/myproject-api
          - export $(cat .env | xargs)
          - sudo service supervisor restart
          - clear
        - docker:
          - j myproject
          - clear
          - docker stop myproject_mysql
          - docker rm myproject_mysql
          - docker run --name myproject_mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true -p 3306:3306 -d mysql:5.6.35
          - clear
          - docker ps

次に、この自動化をコマンドで起動します
tmuxinator start MyProject

# or 
mux s MyProject
ファイルを編集できます
tmuxinator edit MyProject

# or 
mux e MyProject
プロジェクトを起動すると、すべての秒単位で同じ時間でキック.時間がかかる唯一のものは、VMSが作成されるのを待つことです、しかし、すべてが平行に動くので、我々はすでにIDEでコードを開始することができます.私たちは2 - 3分から10秒に行きました.

TMUXの詳細に飛び込みましょう


TMUXサーバとクライアント


TMUXはすべての状態を1つのメインプロセスでtmuxサーバと呼びます.これは、バックグループで実行され、すべてのプログラムを管理し、その出力を追跡します.TMUXコマンドが使用されるとき、それは自動的に起動して、プログラムが走らないままであるとき、それ自体で止まります.
ユーザーがTMUXクライアントを起動すると、彼の端末を引き継ぎ、サーバに接続します.


TMUXの内部では、ターミナルはウィンドウに属し、ウィンドウマネージャのタイルのような長方形の領域である.あなたは/tmpctrl+b ←/↑/↓/→と水平方向のスプリットペインと水平方向ctrl+b %でペイン間を移動することができます.


すべての区画は、ウィンドウの内部に含まれています.これは端末の全領域です.セッションごとに多くのウィンドウがある.これらのウィンドウを並べ替えることができますし、名前を持つ.あなたは、次の、そして、前のためにそのナンバーctrl+b %またはctrl+b <0-9>ctrl+b nで、ウインドウからもう一つに変わることができます.ウィンドウには、ウィンドウ内に各パネルが表示されるレイアウトがあります.レイアウトでは、ペインはペインの境界線と呼ばれる行で区切られます.いずれかの4つのプリセットレイアウトを使用したり、独自の指定できます.

ステータスバー


端末の下部にはステータスバーがあります.これは、どのセッション、ウィンドウとウィンドウがアクティブになっているかを示します.

セッション


つまたは複数のウィンドウがセッション中です.各セッションウィンドウには、ステータスバーの下部に番号付きインデックスと名前があります.ウィンドウは、部品、または多くのセッションに添付することができます.セッションは1つ以上のクライアントに接続でき、一意の名前を持つことができます.

コマンド


Tumuxatorの内部では、ウィンドウやウィンドウの切り替えなどのコマンドを実行できます.コマンドモードに入るには、ctrl+b pを使用します.セミコロンに入ると、vi/vimコマンドモードのようにコマンドを入力できます.

ボーナスは:ここはTMUXに取得し、TMuxinatorスクリプトを助けるために非常に役立つTMUXのカンチーシートです