tmuxinator를 사용하여 복잡한 터미널 프로세스 자동화

사진 작성자Sai Kiran AnaganiUnsplash
나는 당시에 대형 전자상거래 프로젝트에 종사하고 있었는데, 이 프로젝트는 적어도 5개의 단말기와 관련되어 있으며, 각 단말기는 몇 개에서 몇 개의 명령이 필요하다.백엔드 및 프런트엔드, 데이터베이스 및 로컬 환경을 회전하여 명령을 정확히 기억하는 데 2-3분이 소요됩니다.많지 않은 것 같지만, 만약 내가 매일 한 번, 매주 5일, 50주 동안 계속한다면 그것은 8시간의 육체노동이다.나는 몇 가지 bash 스크립트를 사용하려고 생각한 후에, 나는 tmux와 tmuxinator를 발견했다.

tmux


tmux는 단말기 다중 복용기를 대표한다.이것은 터미널에 있는 여러 프로그램 사이를 전환해서 분리해서 다른 터미널로 다시 연결할 수 있도록 합니다.그것은 윈도우즈 관리자처럼 터미널에서 여러 개의 프로그램과 케이스를 사용할 수 있다.원격 서버에 설치하면 tmux는 원격 연결을 보호할 수 있습니다.SSH, PuTty 및 기타 연결에 적합합니다.많은 로컬 컴퓨터들이 원격으로 프로그램에 접근할 수 있다.
우선 그것을 설치합시다.
# 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 프로젝트를 만들려면 new 명령을 사용하십시오
tmuxinator new MyProject
모든 tmuxinator 명령은 알파벳으로 줄여서 쓸 수 있습니다.저희 별명은요.
mux n MyProject
이것은 모든 프로세스를 자동화하는yaml 파일을 만들 것입니다.yaml 파일을 편집할 때, 일을 더욱 간단하게 하고, 한 단계를 잊지 않도록 실시간으로 항목을 수동으로 설정하는 것을 권장합니다.
로컬 개발 환경에서 사용되는 실제 프로젝트를 살펴보겠습니다.
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
프로젝트를 시작할 때, 모든 것이 몇 초 안에 동시에 시작됩니다.유일하게 시간이 걸리는 것은 vm가 생성되기를 기다리는 것입니다. 그러나 모든 것이 병렬적으로 실행되기 때문에 IDE에서 코드를 작성하기 시작할 수 있습니다.우리는 2-3분에서 10초까지 거대한 수확이다!

우리 는 tmux 의 세부 사항 을 깊이 이해합시다


tmux 서버 및 클라이언트


tmux는 모든 상태를 tmux 서버라는 메인 프로세스에 저장합니다.그것은 백엔드에서 실행되고 모든 프로그램을 관리하며 출력을 추적합니다.tmux 명령을 사용하면 자동으로 시작되며, 프로그램이 실행될 수 없을 때 자동으로 정지됩니다.
사용자가 tmux 클라이언트를 시작할 때, 터미널을 연결하여 서버에 연결합니다. 그러면 /tmp 의 플러그인 파일을 통해 통화할 수 있습니다.

창유리


tmux 내부에서 모든 터미널은 하나의 창에 속하는데 이것은 윈도우즈 관리자의 평평한 배열과 매우 직사각형 구역이다.ctrl+b ←/↑/↓/→ 를 사용하여 창 사이를 탐색하고 ctrl+b % 수직 분할 창을 사용하며 ctrl+b % 수평 분할 창을 사용할 수 있습니다.

창가


모든 창은 하나의 창에 포함되어 있으며, 이것은 터미널의 전체 구역이다.세션마다 많은 창이 있을 수 있습니다.이 창들은 이름을 가지고 다시 정렬할 수 있습니다.다음 및 이전 창의 번호ctrl+b <0-9> 또는 ctrl+b nctrl+b p를 사용하여 한 창에서 다른 창으로 전환할 수 있습니다.창마다 창에 표시되는 레이아웃이 있습니다.배치에서 창은 창 경계선이라고 하는 선으로 구분됩니다.4가지 사전 설정 레이아웃 중 하나를 사용하거나 자신의 레이아웃을 지정할 수 있습니다.

상태막대


터미널의 밑에 상태 표시줄이 있습니다.현재 활성 상태인 세션, 창 및 창을 나타냅니다.

회의


하나 이상의 창이 세션에 있습니다.각 세션 창에는 상태 표시줄 아래쪽에 번호 색인과 이름이 있습니다.창은 여러 세션의 일부일 수도 있고 여러 세션에 추가할 수도 있습니다.세션은 하나 이상의 클라이언트에 첨부할 수 있으며 고유한 이름을 가집니다.

명령하다


tmuxinator에서 창이나 창을 전환하거나 세션을 닫거나 새 세션을 열 수 있습니다.명령 모드로 들어가려면 ctrl+b를 사용하고 명령을 사용합니다.세미콜론을 입력할 때vi/vim 명령 모드와 유사한 명령을 입력할 수 있습니다.

보상: tmux 메모가 있습니다. tmux에 들어가거나 tmuxinator 스크립트 작성에 도움이 됩니다.

좋은 웹페이지 즐겨찾기