tmuxinator를 사용하여 복잡한 터미널 프로세스 자동화
8784 단어 beginnerslinuxproductivity
나는 당시에 대형 전자상거래 프로젝트에 종사하고 있었는데, 이 프로젝트는 적어도 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 n
및 ctrl+b p
를 사용하여 한 창에서 다른 창으로 전환할 수 있습니다.창마다 창에 표시되는 레이아웃이 있습니다.배치에서 창은 창 경계선이라고 하는 선으로 구분됩니다.4가지 사전 설정 레이아웃 중 하나를 사용하거나 자신의 레이아웃을 지정할 수 있습니다.상태막대
터미널의 밑에 상태 표시줄이 있습니다.현재 활성 상태인 세션, 창 및 창을 나타냅니다.
회의
하나 이상의 창이 세션에 있습니다.각 세션 창에는 상태 표시줄 아래쪽에 번호 색인과 이름이 있습니다.창은 여러 세션의 일부일 수도 있고 여러 세션에 추가할 수도 있습니다.세션은 하나 이상의 클라이언트에 첨부할 수 있으며 고유한 이름을 가집니다.
명령하다
tmuxinator에서 창이나 창을 전환하거나 세션을 닫거나 새 세션을 열 수 있습니다.명령 모드로 들어가려면
ctrl+b
를 사용하고 명령을 사용합니다.세미콜론을 입력할 때vi/vim 명령 모드와 유사한 명령을 입력할 수 있습니다.보상: tmux 메모가 있습니다. tmux에 들어가거나 tmuxinator 스크립트 작성에 도움이 됩니다.
Reference
이 문제에 관하여(tmuxinator를 사용하여 복잡한 터미널 프로세스 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bigj1m/automating-multiple-terminals-with-tmux-and-tmuxinator-47n2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)