Pregunta Restaure la sesión de tmux después del reinicio


¿Hay alguna manera de guardar una sesión de tmux? En otras palabras, si reinicio la computadora, ¿siempre perderé las sesiones?


212


origen


Puede hibernar en el disco como alternativa - Mâtt Frëëman
La hibernación es una alternativa a dejar su computadora funcionando constantemente, sin reiniciar. - chepner
@chepner: Hay esos días cuando *** System restart required *** - karatedog
@karatedog Sí, así que ambos estamos de acuerdo en que la hibernación no es una solución para perder tu sesión de tmux al reiniciar. - chepner


Respuestas:


Sí, si reinicias tu computadora, perderás las sesiones. Las sesiones no se pueden guardar. Pero, pueden ser guionizados. Lo que la mayoría hace de hecho es guión algunas sesiones para que puedas volver a crearlas. Por ejemplo, aquí hay un script de shell trivial para crear una sesión:

#!/bin/zsh                                                                                                   

SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null

if [ $? != 0 ] 
 then
    tmux new-session -s $SESSIONNAME -n script -d
    tmux send-keys -t $SESSIONNAME "~/bin/script" C-m 
fi

tmux attach -t $SESSIONNAME

Esto es lo que hace. Primero, comprueba si ya hay alguna sesión con ese nombre (en este caso, el nombre muy original es "script") con tmux tiene-sesión. Verifica el código de retorno. Si ya hay una sesión en curso con ese nombre, omite el ciclo "si" y va directamente a la última línea, donde se adjunta a la sesión. De lo contrario, crea una sesión y le envía algunas claves (simplemente ejecuta un script aleatorio por ahora). Luego sale del bloque "if" y se conecta.

Esto es un muy muestra trivial. Puede crear varias ventanas, paneles y elementos similares antes de adjuntar.

Esta voluntad no pero es la misma cosa que pediste. Si realiza algún cambio en la sesión, por ejemplo, cambia el nombre de una ventana y crea un nuevo panel en ella, si reinicia esos cambios, no se guardarán, por supuesto.

Hay algunas herramientas que facilitan el proceso de sesiones de scripting, aunque prefiero hacer las cosas manualmente (creo que es más versátil). Esas herramientas son Tmuxinator y Teamocil.

Mi principal fuente de información fue el libro de Tmux "The Pragmatic Bookshelf".


140



no suena como que hará nada si quiero restaurar una sesión con 5 archivos abiertos. No hay manera de hacer eso? - chovy
Tmux no sabe nada sobre el estado de los procesos que posiblemente haya estado ejecutando. Podrías guiar teniendo el mismo archivos abiertos haciendo que el comando 'send-keys' o 'split-window' sea 'vim file1 file2 file3' o busque en la gestión de sesión de su editor (vim -S y similares) - bloy
¿Cuál es el propósito de la tmux send-keys ... ¿línea? - Dominykas Mostauskis
@DominykasMostauskis ese comando envía presione la tecla para la sesión especificada. Es como ingresar a la sesión e ingresar esas mismas teclas desde el teclado. En este caso, envía "~ / bin / script" seguido de Enter. - Dakatine
¿Puedo tener la secuencia de comandos para iniciar sesión en ssh con nombre de usuario y pase? (Sé que no está asegurado, solo quiero saber si es posible para sistemas en los que no me importa la seguri- dad pero aún tengo que tener usuario y pase). - Jas


Escribí un script bash simple que persiste abre sesiones de tmux, ventanas y directorios de trabajo actuales en cada uno.

Llámalo manualmente o periódicamente desde cron (porque es posible que te olvides):

tmux-session save

Escribirá a ~/.tmux-session. Restaurelos después de reiniciar de esta manera:

tmux-session restore

Encuentro esto mucho mejor que una secuencia de Perl de varios cientos de líneas de longitud.


100





Escribí un complemento de tmux que le permite guardar el entorno completo de tmux y restaurarlo más tarde. Se esfuerza por ser realmente detallado para que tenga la sensación de que nunca abandona el tmux.

https://github.com/tmux-plugins/tmux-resurrect

Actualización: ahora hay un tmux-continuo complemento que realiza copias de seguridad automáticas del entorno tmux. Opcionalmente también * automáticamente * restaura tmux env después del reinicio de la computadora.


66



Justo cuando publiqué mi "respuesta" con el mismo enlace, miré hacia arriba: "¡Do'h!" Encontré esto al intentar recordar cómo se llamaba tu complemento. - phatskat
Este complemento no está mal, pero no restableció todos mis programas. Leerá más de sus documentos y tal vez envíe un problema a github. - Arne
@Arne Dependiendo del programa, esto puede requerir un punto de control del programa. En su lugar, recomendaría configurar sus programas para restaurar - archivos .vimrc persistentes y posiciones de cursor para vim, etc. - y almacenar el comando tmux pane_current_command para programas como man que se pueden volver a abrir. El punto de inspección es muy complicado en mi opinión, pero vale la pena investigarlo en cualquier caso. - John P
@ bruno-sutic ¿cuál es la diferencia entre tu complemento (tmux-resurrect) y tmux-coninuum? - lony


tmuxinator es una herramienta escrita en Ruby, que podría usarse para crear y administrar sesiones de tmux con facilidad. Se podría usar para crear un proyecto, que luego podría ser instanciado como sesión de tmux.


10





Considere esta solución parcial encontrada aquí

El autor crea una función que guarda el historial de la sesión de tmux para persistir en el estado de la sesión de tmux después de reiniciar el servidor.


5



¿Podría publicar lo que dicen? Los enlaces pueden pudrirse - cpast
@cpast: esto es cierto, pero los comentarios también pueden pudrirse. Mejor dar ambas :) - danielpops