2012-06-21 04:17:49 +0000 2012-06-21 04:17:49 +0000
277
277

Restaurar la sesión de tmux después de reiniciar

¿Hay alguna forma de guardar una sesión de tmux? En otras palabras, si reinicio el ordenador, ¿perderé siempre las sesiones?

Respuestas (5)

176
176
176
2012-06-22 08:58:34 +0000

Sí, si reinicias tu ordenador perderás las sesiones. Las sesiones no se pueden guardar. Pero, pueden ser programadas. Lo que la mayoría hace, de hecho, es scribir algunas sesiones para poder recrearlas. 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 original es “script”) con tmux has-session. Comprueba el código de retorno. Si ya hay una sesión en curso con ese nombre, se salta el ciclo “if” y va directamente a la última línea, donde se adjunta a la sesión. En caso contrario, crea una sesión y le envía algunas claves (por ahora, sólo ejecuta un script aleatorio). Luego sale del bloque “if” y se conecta.

Este es un ejemplo muy trivial. Puedes crear múltiples ventanas, paneles y similares antes de adjuntar.

Esto no será lo mismo que pediste, sin embargo. Si haces algún cambio en la sesión, por ejemplo, renombras una ventana y creas un nuevo panel en ella, si reinicias esos cambios no se guardarán, por supuesto.

Hay algunas herramientas que facilitan el proceso de scripting de las sesiones, aunque yo 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”.

122
122
122
2013-07-04 22:37:01 +0000

Escribí un simple script bash que persigue las sesiones tmux abiertas, las ventanas y los directorios de trabajo actuales en cada una.

Llámalo así manualmente o periódicamente desde cron (porque se te puede olvidar):

tmux-session save

Escribirá en ~/.tmux-session. Restablézcalos después de reiniciar así:

tmux-session restore

Encuentro esto mucho mejor que un script Perl de varios cientos de líneas.

10
10
10
2014-06-26 17:40:29 +0000

tmuxinator es una herramienta escrita en Ruby, que puede ser utilizada para crear y gestionar sesiones tmux con facilidad. Se puede utilizar para crear un proyecto, que luego puede ser instanciado como una sesión tmux.

5
5
5
2013-02-02 21:54:54 +0000

Considere esta solución parcial encontrada aquí

El autor crea una función que guarda la historia de la sesión tmux para persistir el estado de la sesión tmux después de un reinicio del servidor.

1
1
1
2019-05-03 08:24:08 +0000

Utilizo con éxito https://github.com/jimeh/tmuxifier para recrear sesiones. Esto puede ser instalado sin ruby, sólo usando git.

Los ejemplos son bastante autoexplicativos, por ejemplo https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh