GNU Screen y Tmux: consejos y trucos

8

Así que soy un gran admirador de los multiplexores como GNU Screen y Tmux , pero incluso usando Screen durante años, todavía reconozco que hay muchas cosas que no sé (y solo uso Tmux durante un par de meses, así que es peor )

¿Qué configuraciones, consejos y trucos usas en ese software (ambos o en cada uno, no importa)?

Lo uso como mi configuración de pantalla (creo que lo adapté del valor predeterminado de Ubuntu screenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

Es una configuración simple para que la barra de estado se muestre con algunos colores, pero estoy seguro de que hay más cosas que puedo hacer con la pantalla y Tmux y me encantaría saberlo.

volcado de memoria
fuente
zombie qrmantiene la ventana abierta incluso si el proceso está inactivo y permite qcerrarla o rresucitar el proceso. Útil para la verificación de software.
Ency

Respuestas:

4

Esto puede ser un poco simple para esta multitud, pero me pareció útil agregar esto al final de .profile, para que cuando inicie sesión de forma remota a través de ssh, pueda leer el MOTD, luego cambie a la pantalla.

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi
bgvaughan
fuente
3

Tengo esto en mi .bashrc. Si no está ejecutando la pantalla, esta función solo llama sshcomo de costumbre cuando se ejecuta. Si está ejecutando dentro de la pantalla (y no ha cambiado el valor predeterminado $TERM), primero establece el nombre de la ventana en el host remoto (junto con cualquier parámetro opcional). Es muy útil realizar un seguimiento de las conexiones remotas cuando tiene muchas abiertas, lo cual es frecuente en nuestra línea de trabajo, creo.

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

También lo uso bind ^A windowlist -bpara acceder fácilmente a la lista de ventanas (solo toque ctrl-A dos veces).

Fácil soporte de ssh-agent para todas las ventanas:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

Luego, en cualquier ventana, ssh-add solo una vez cuando comienza una nueva sesión.

Finalmente, cuando se conecta a una sesión de pantalla remota desde otra sesión de pantalla, puede usar screen -x -e ^Vvpara configurar la secuencia de control en CTRL-V (por ejemplo). Esto evita tener que encadenar CTRL-As para controlar la sesión remota.

Eduardo Ivanec
fuente
0

Puede considerar byobu , que es esencialmente una colección de cientos de consejos, trucos, configuraciones, combinaciones de teclas, scripts de estado y mejores prácticas orientadas en torno a screeny tmux.

Dustin Kirkland
fuente
0

Aunque comencé a usar tmux para paneles, todavía uso la pantalla para multiplexar las ventanas dentro. Supuestamente, tmux tiene esta funcionalidad, pero intercambiar paneles de una ventana a otra no es intuitivo para mí, ni dos visores de tmux conectados pueden ver diferentes ventanas dentro del mismo demonio (comportamiento screen-x), por lo tanto, la solución screen-in-tmux. Estos son dos enlaces tmux.conf que me tomaron más tiempo descubrir y uso todos los días.

El primero, vincular M (ctrl-b shift-M), alterna tmux entre el selector de panel del mouse y el resaltado / copia del mouse. Todavía puedes copiar / pegar en el modo de selección de panel, pero debes mantener presionada la tecla Mayús (y si te acostumbras a eso, copiar / pegar en cualquier otra aplicación te hará un poco miserable, déjame decirte). La macro también hace que sea visualmente obvio qué modo está seleccionado actualmente.

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

El segundo, vincular CL (ctrl-b ctrl-l), tomará cualquier diseño de 4 paneles y lo convertirá en mi diseño preferido. Muchas veces, me doy cuenta de que presioné ctrl-d en un panel que pensé que estaba dentro de la pantalla para cerrarlo, pero en su lugar no hubo sesión en la pantalla y cerró el panel. Dado que mi diseño es v-split, h-split, v-split y algunos cambios de tamaño, si accidentalmente cerré cualquiera que no sea la última ventana, se convierte en una molestia (sin juego de palabras) cerrar cualquier panel intermedio entre el que necesito recrear y el último, luego vuelva a crear y redimensione los paneles, y finalmente vuelva a adjuntar cualquier sesión de pantalla que haya tenido que separar al matar paneles. Con esta macro, puedo crear un nuevo panel, ctrl-b {(el enlace predeterminado para swap-pane -U) hasta que vuelva al orden correcto, luego presione la macro y todo volverá a la normalidad. Mi diseño preferido probablemente no sea el mismo que el tuyo,list-windows comando para obtener una cadena de diseño como la siguiente.

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

Si eso es demasiado ingenuo para su gusto, siempre hay tmuxinator para la gestión de paneles.

Andrew Domaszek
fuente