Parlem de terminals de consola! Parlem de TMUX!!!
Fa ja uns mesos que estem treballant en el departament amb aquest multiplexor de terminals i estem tant contents amb ell que s’ha guanyat un post!
Encara recordo amb nostàlgia quant vem descobrir l’screen, eina que vem explotar en els servidors per
però com va dir un colega, l’screen està “depre” ( de deprecated! està passat de moda! ), amb tota la raó del món! ja veureu…
D’una altra banda, Terminator(Linux) i iTerm(Mac) han estat les consoles utilitzades per realitzar varies tasques a la vegades en diferents servidors, per fer desplegaments de codi, canvis de configuracions, apagar focs, etc… Mitjançant les pestanyes pots tindre varies consoles connectades a diferents entorns o grups de servidors diferents, a més, cadascuna de les pestanyes les pots dividir en panells i executar les mateixes commandes o scripts alhora, MOLT útil!!!
Doncs si aquestes funcionalitats del iTerm/Terminator ens han estat MOLT útils, imagineu-vos combinat amb el screen, i n’obtenim el TMUX!!. Ja fa uns quants caps de setmana que vaig passar una tarda per apendre les opcions i preparant-me la configuració a mida, i va ser MOLT productiu, ho recomano a qualsevol sysadmin. Haig de reconèixer que al principi vaig tenir una mica de reticiència però ara ho agraeixo.
Descric el que més valoro:
Adjunto el meu perfil del tmux en aquest post, on recalcaré les que trobo més interessants.
Fitxer per descarregar: tmux.conf
Path: $HOME/.tmux.conf
# Avisa on fa perpellugues el nom de la pestanya on algun dels seus panells ha tingut activitat set -g visual-activity on # Per a cada panell guardem 10000 linies de buffer set -g buffer-limit 10000 # C^B+r per recarregar en el tmux canvis en aquestes configuracion (aixo per nota!) unbind r bind r source-file ~/.tmux.conf \; display "Reloaded!" #C^B+a :(All) per escriure en tots els panells de la pestanya unbind a bind a setw synchronize-panes on # C^B+o :(One) per escriure nomes en panell seleccionat unbind o bind o setw synchronize-panes off # Els indexos de panells i pestanyes comencen per 1, en comptes de 0 que és el per defecte set -g base-index 1 setw -g pane-base-index 1 # Personalitzant la barra d'estat # Powerline symbols: ⮂ ⮃ ⮀ ⮁ ⭤ set -g status-utf8 on set -g status-left-length 32 set -g status-right-length 150 set -g status-interval 2 set -g status-left '#[fg=colour15,bg=colour238,bold] #S #[fg=colour238,bg=colour234,nobold]⮀' set -g status-right '#[fg=colour245]⮃ %R ⮃ %d %b #[fg=colour254,bg=colour234,nobold]⮂#[fg=colour16,bg=colour254,bold] #h ' set -g window-status-format "#[fg=white,bg=colour234] #I #W " set -g window-status-current-format "#[fg=colour234,bg=colour39]⮀#[fg=colour16,bg=colour39,noreverse,bold] #I ⮁ #W #F #[fg=colour39,bg=colour234,nobold]⮀"
Aqui defineixo una plantilla del tmux per facilitar l’ús, molt útil a l’hora d’apagar focs.
tmux_magento.sh
El seguent gif mostra la execució de la plantilla que us he penjat, on hem connecto a tots els frontals d’un mateix role(magento), 8 frontals. La plantilla no deixa de ser un shell script on cada linia mofica el tmux on estem. De fet, per fer-lo funcionar, ÉS NECESSARI estar dins una pestanya del tmux i tenir els indexos dels panells configurats a 1, en comptes de 0 com té per defecte el tmux.
Com podeu veure en el gif anterior, jo estic acostumat a connectar-me des d’un tmux a moltes consoles tty de varis servidors per SSH2. Un altre forme de treballar seria connectar-me a instancies de tmux en cadascun dels servidors a través d’un fitxer socket, en comptes de connectar-me a la consola, ideal per a compartir sessions remotes alhora entre varis operadors.
Per finalitzar, les fonts consultades:
Zooming Tmux Panes
Simple Remote Pairing with Wemux
Splitting terminal with tmux
Manual del Tmux
Projects Links:
Tmux Project
Wemux Project