¿Hay alguna forma de guardar una sesión tmux? En otras palabras, si reinicio la computadora, ¿siempre perderé las sesiones?
*** System restart required ***
¿Hay alguna forma de guardar una sesión tmux? En otras palabras, si reinicio la computadora, ¿siempre perderé las sesiones?
*** System restart required ***
Respuestas:
Sí, si reinicia su computadora, perderá las sesiones. Las sesiones no se pueden guardar. Pero, pueden ser programados. De hecho, lo que más hace es escribir algunas sesiones para que pueda 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 has-session . Comprueba el código de retorno. Si ya hay una sesión en curso con ese nombre, omite el ciclo "if" y pasa 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 (solo ejecuta un script aleatorio por ahora). Luego sale del bloque "if" y se une.
Esta es una muestra muy trivial. Puede crear múltiples ventanas, paneles y similares antes de adjuntarlos.
Sin embargo, esto no será lo mismo 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, por supuesto, no se guardarán.
Hay algunas herramientas que facilitan el proceso de las sesiones de secuencias de comandos, 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 Tmux "The Pragmatic Bookshelf".
tmux send-keys ...
línea?
some command; if [ $? != 0 ]; then .....
es más fácil de escribir (y leer) como: if ! some command; then .....
.
Escribí un script bash simple que persiste en las sesiones abiertas de tmux, ventanas y directorios de trabajo actuales en cada uno.
Llámalo de forma manual o periódica desde cron (porque podrías olvidarlo):
tmux-session save
Le escribirá a ~/.tmux-session
. Restaurarlos después de reiniciar así:
tmux-session restore
Esto me parece mucho mejor que una secuencia de comandos Perl de varios cientos de líneas.
Escribí un complemento tmux que le permite guardar el entorno tmux completo y restaurarlo más tarde. Se esfuerza por ser realmente detallado para que tenga la sensación de que nunca abandona tmux.
https://github.com/tmux-plugins/tmux-resurrect
Actualización: ahora hay un complemento tmux-continuum que realiza guardados automáticos en segundo plano del entorno tmux. Opcionalmente, también * automáticamente * restaura tmux env después del reinicio de la computadora.
tmuxinator es una herramienta escrita en Ruby, que podría usarse para crear y administrar sesiones tmux con facilidad. Podría usarse para crear un proyecto, que luego podría ser instanciado como una sesión tmux.
Considere esta solución parcial que se encuentra aquí
El autor crea una función que guarda el historial de la sesión de tmux para mantener el estado de la sesión de tmux después de reiniciar el servidor.
Utilizo con éxito https://github.com/jimeh/tmuxifier para recrear sesiones. Esto se puede instalar sin ruby, solo usando git.
Las muestras se explican por sí mismas, por ejemplo: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh