Hibernar es una alternativa a dejar su computadora funcionando constantemente, no reiniciando.
chepner
55
@chepner: Hay esos días cuando*** System restart required ***
karatedog
2
@karatedog Sí, por lo que ambos estamos de acuerdo en que la hibernación no es una solución para perder su sesión tmux al reiniciar.
chepner
Respuestas:
170
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:
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".
no parece que eso haga nada si quiero restaurar una sesión con 5 archivos abiertos. ¿No hay forma de hacer eso?
chovy
44
Tmux no sabe nada sobre el estado de los procesos que puede haber tenido en ejecución. Puede hacer un script que tenga los mismos archivos abiertos haciendo que el comando 'send-keys' o 'split-window' sea 'vim file1 file2 file3' o busque en la administració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
2
@DominykasMostauskis ese comando envía pulsaciones de teclas a 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
1
la combinación some command; if [ $? != 0 ]; then .....es más fácil de escribir (y leer) como: if ! some command; then ......
fonini
117
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.
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.
Justo cuando publiqué mi "respuesta" con el mismo enlace busqué: "¡sí! Encontré esto mientras intentaba recordar cómo se llamaba su complemento.
phatskat
Este complemento no es malo, pero no restauró todos mis programas. Leerá más de sus documentos y tal vez envíe un problema en github.
Arne
@Arne Dependiendo del programa, esto puede requerir puntos de verificación del programa. En cambio, 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. Los puntos de control son muy complicados en mi opinión, pero vale la pena analizarlos en cualquier caso.
John P
@ bruno-sutic ¿cuál es la diferencia entre su complemento (tmux-resurrect) y tmux-coninuum?
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.
*** 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:
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".
fuente
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):
Le escribirá a
~/.tmux-session
. Restaurarlos después de reiniciar así:Esto me parece mucho mejor que una secuencia de comandos Perl de varios cientos de líneas.
fuente
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.
fuente
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.
fuente
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.
fuente
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
fuente