Administrando sistemas con tmux

15
ADMINISTRANDO SISTEMAS CON TMUX http://vjavierf.wordpress.com tmux.sourceforge.net Una breve introducción al uso de tmux

description

Administrando sistemas con tmux

Transcript of Administrando sistemas con tmux

Page 1: Administrando sistemas con tmux

ADMINISTRANDO SISTEMAS CON TMUX

http://vjavierf.wordpress.com

tmux.sourceforge.net

Una breve introducción al uso de tmux

Page 2: Administrando sistemas con tmux

tmux…¿Para qué?

Para multiplexar terminales. Tmux permite tener varios terminales en una sola

pantalla, desvincularlos (manteniéndolos funcionando en segundo plano) y recuperarlos más tarde.

Ventajas: No necesitamos ejecutar varias instancias de la

aplicación de terminal para conectarnos al mismo servidor.

Podemos desconectarnos/conectarnos a una sesión de tmux en cualquier momento y continuar con el trabajo que estábamos realizando exactamente dónde lo dejamos.

Podemos compartir el terminal para ver el trabajo que está realizando otro sysadmin.

Page 3: Administrando sistemas con tmux

Instalando tmux

En distribuciones basadas en GNU/Linux Debian:# apt-get update; apt-get install tmux

En Mac OS X usar Homebrew:$ brew install tmux

En otras distribuciones Linux sin tmux paquetizado o en OpenBSD, FreeBSD, NetBSD e incluso en Solaris y AIX (aunque no está muy probado en estos últimos), mejor instalar de fuentes: Instalar libevent 2.x:

$ wget http://downloads.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.21-stable.tar.gz

$ tar -xzvf libevent-2.0.21-stable.tar.gz && cd libevent-2.0.21-stable

$ ./configure && make

$ sudo make install

Instalar tmux:$ wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.8/tmux-1.8.tar.gz

$ tar -xzvf tmux-1.8.tar.gz && cd tmux-1.8

$ ./configure && make

$ sudo make install

Page 4: Administrando sistemas con tmux

Sesiones, ventanas y paneles

Una sesión es una colección de pseudo-terminales bajo la gestión de tmux. Las sesiones son persistentes y sobreviven a desconexiones accidentales o devinculaciones (C-b d) intencionales.Cada sesión tiene una o más ventanas. Una ventana ocupa la pantalla entera y puede ser dividida en paneles rectangulares, cado uno de los cuales es un pseudo-terminal.

session0

window 0

pane 0

shell

tmux new -s session0

session1

window 0 window 2

pane 0

shell

tmux new -s session1

tail –f file

window 1

pane 1 pane 2

shell program

top

Page 5: Administrando sistemas con tmux

Comandos tmux básicos

tmux Iniciar una sesión y conectarse a ella.

tmux new -s sessionname [-d] Iniciar una sesión con nombre sessionname y conectarse a ella. Si

especificamos el parámetro -d se crea la conexión pero no se conecta a ella.

tmux ls Listar las sesiones en ejecución.

tmux new -s sessionname -t session Crea una nueva sesión con nombre sessionname que comparte todas las

ventanas con la sesión existente session.

tmux rename [-t sessionname] newsessionname Renombrar la sesión a newsessionname.

tmux attach [-t sessionname] Vincularse/conectarse a una sesión.

tmux detach [-t sessionname] Desvincularse/desconectarse de una sesión.

tmux kill-session [-t sessionname] Finalizar sesión cerrando todas las ventanas asociadas y desvinculando a todos

los clientes conectados a ella.

Page 6: Administrando sistemas con tmux

La tecla de comandos Ctrl-b

Ctrl-b es la tecla de comandos de tmux. Utilizada para trabajar con tmux dentro de una sesión

de tmux. Todos los comandos de tmux se inician con esta

secuencia de comandos.

El comando más importante es Ctrl-b ? Para cambiar la tecla de

comandos a Ctrl-a editamos el fichero ~./tmux.conf y añadimos las líneas:

# Change the Prefix Key

set -g prefix C-a

unbind C-b

bind C-a send-prefix

Page 7: Administrando sistemas con tmux

Comandos Ctrl-b – Gestión de sesiones

C-b :new [-s sessionname] [shell-command]

C-b s (switch session)

C-b :choose-session

C-b D

C-b d

C-b $

exit

→ Crear nueva sesión.

→ Cambiar de sesión.

→ Cambiar de sesión.

→ Desvincularse (detach) de

una sesión de tmux en modo

interactivo.

→ Desvincularse (detach) de la

sesión actual.

→ Renombrar la sesión actual.

→ Cerrar la sesión o panel

actual.

Page 8: Administrando sistemas con tmux

Comandos Ctrl-b – Gestión de ventanas

C-b c (create window)

C-b :new-window

C-b :list-windows

C-b ,

C-b n (next window)

C-b :next-window

C-b p (previous window)

C-b :previous-window

C-b n

C-b w

C-b :choose-window

C-b &

C-b :kill-window

→ Crear una nueva ventana.

→ Crear una nueva ventana.

→ Listar ventanas.

→ Renombrar ventana.

→ Ir a la siguiente ventana.

→ Ir a la siguiente ventana.

→ Ir a la ventana anterior.

→ Ir a la ventana anterior.

→ Ir a la ventana nº n (de 0 a 9).

→ Elegir ventana interactivamente.

→ Elegir ventana interactivamente.

→ Cerrar la ventana actual.

→ Cerrar la ventana actual.

Page 9: Administrando sistemas con tmux

Comandos Ctrl-b – Gestión de paneles (I)

C-b %

C-b :split-window -h

C-b “

C-b :split-window

C-b :list-panes

C-b q

C-b :display-panes

C-b o

C-b :select-pane

C-b [↑ | ↓ | ← | →]

C-b ;

C-b C-o

C-b :rotate-window [-D]

→ Dividir la ventana verticalmente.

→ Dividir la ventana verticalmente.

→ Dividir la ventana horizontalmente.

→ Dividir la ventana horizontalmente.

→ Listar paneles.

→ Mostrar número de paneles.

→ Mostrar número de paneles.

→ Cambiar al siguiente panel.

→ Cambiar al siguiente panel.

→ Desplazarse entre paneles.

→ Ir al panel seleccionado anteriormente.

→ Rotar panel.

→ Rotar panel. Con -D en sentido inverso.

Page 10: Administrando sistemas con tmux

Comandos Ctrl-b – Gestión de paneles (II) C-b SPACE

C-b :next-layout

C-b !

C-b :break-pane

C-b :pipe-pane “cat > /path/file.log”

C-b :pipe-pane

C-b :resize-pane [–DLRU] [-t pane] [n] (Down|Left|Right|Up)

C-b :setw synchronize-panes on|off

C-b x

→ Cambiar disposición de los paneles.

→ Cambiar disposición de los paneles.

→ Abrir panel en un nueva ventana.

→ Abrir panel en un nueva ventana.

→ Activa/desactiva el logging del panel actual.

→ Redimensiona el panel en la dirección

indicada n líneas.

→ Duplica la entrada de un panel en el resto

de paneles de la misma ventana.

→ Cerrar panel actual.

Page 11: Administrando sistemas con tmux

Bonus track

Ejecutar un programa específico al iniciar una nueva sesión:

tmux new -s sessionname [-d] command

Bloquear la sesión:

C-b :set lock-after-time timeout

Bloquea la sesión tras timeout segundos de inactividad.

Por defecto se ejecuta el comando lock para bloquear la sesión (opción lock-command).

En Debian (sin comando lock): # apt-get install vlock y C-b :set lock-command vlock

C-b :set lock-after-time 0

Deshabilitar el bloqueo configurado.

Log del panel actual:

Añadir al fichero de configuración ~./tmux.conf las siguientes líneas:bind-key H pipe-pane 'cat >> $HOME/tmux-#W.log' \; display-message 'Started logging to $HOME/tmux-#W.log'

bind-key h pipe-pane \; display-message 'Ended logging to $HOME/tmux-#W.log'

C-b H

Inicia el logging del panel actual.

C-b h

Finaliza el loggin del panel actual.

Page 12: Administrando sistemas con tmux

El fichero ~/.tmux.conf sobrescribe la configuración de /etc/tmux.confEjemplo de un posible fichero de configuración…root@demo:~# cat .tmux.conf# use UTF8set status-utf8 onset -g utf8 onsetw -g utf8 on

# make tmux display things in 256 colorsset -g default-terminal "screen-256color"

# set Ctrl-a as the default prefix key combination and unbind C-b to free it upset -g prefix C-aunbind C-b

# use send-prefix to pass C-a through to applicationbind C-a send-prefix

# set window and pane index to 1 (0 by default)set -g base-index 1setw -g pane-base-index 1

# show status bar (on by default)set -g status on# set -g status-justify centre # center window list for clarity # set -g status-position top # position the status bar at top of screenset -g status-interval 5 # set update frequencey (default 15 seconds)

# fix tmux borders displayed as x q instead of linesset –ga terminal-overrides ‘,*:enacs@:smacs@:rmacs@:acsc@’

Continua en la siguiente diapositiva…

alias tmux=‘tmux -u’equivalente a

Page 13: Administrando sistemas con tmux

El fichero ~/.tmux.conf sobrescribe la configuración de /etc/tmux.conf…continuación de la anterior diapositiva.

# reload ~/.tmux.conf using PREFIX r bind r source-file ~/.tmux.conf \; display "Reloaded!"

# use PREFIX | to split window horizontally and PREFIX - to split verticallybind | split-window -h bind - split-window -v

# map Vi movement keys as pane movement keysbind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane –R

# use C-h and C-l to cycle thru panes bind -r C-h select-window -t :-bind -r C-l select-window -t :+

# resize panes using PREFIX H, J, K, L bind H resize-pane -L 5 bind J resize-pane -D 5 bind K resize-pane -U 5 bind L resize-pane -R 5

# sync panesbind C-s set-window-option synchronize-panes

# logginbind-key H pipe-pane 'cat >> $HOME/tmux-#W.log' \; display-message 'Started logging to $HOME/tmux-#W.log‘bind-key h pipe-pane \; display-message 'Ended logging to $HOME/tmux-#W.log'

Page 14: Administrando sistemas con tmux

Recursos

Imprescindibles:

Tmux web site: https://www.gnu.org/software/screen/

Manual: http://www.openbsd.org/cgi-bin/man.cgi?query=tmux&sektion=1

man tmux

Interesantes:

An introduction to tmux, by Jack Franklin: http://vimeo.com/69185909

Terminal Multiplexers: Screen, Tmux y Dtach: http://hyperpolyglot.org/multiplexers

TMUX and SSH auto-login with ssh-agent:

http://robinwinslow.co.uk/2012/07/20/tmux-and-ssh-auto-login-with-ssh-agent-finally/

Aplicaciones relacionadas:

tmux-powerline y powerline: https://github.com/erikw/tmux-powerline yhttps://github.com/Lokaltog/powerline

GNU screen: http://www.gnu.org/software/screen/

Page 15: Administrando sistemas con tmux

¿Dudas, preguntas, comentarios, aportaciones, ideas?

¿Quién presenta el siguiente Systech+ Day?