Me conecté a un servidor a través de SSH e inicié sesión en mysql, y le pedí que ejecutara una consulta (cuyos resultados se vierten en un CSV) que podría llevar más de una hora. Aunque he dado instrucciones a mi cliente para que envíe paquetes nulos cada 60 segundos para mantener activa la sesión, todavía estoy paranoico de que la consulta / proceso mysql pueda finalizar, por lo que mis preguntas son:
- ¿Una sesión ssh cancelada (debido a la inactividad) matará el proceso de consulta mysql?
- ¿Cómo puedo asegurarme de que esto no suceda? ¿Son suficientes los paquetes nulos enviados cada 60 segundos?
nohup
cuando anteponga al iniciar sesión en mysql, ¿persistirán las consultas que se ejecutan dentro?nohup
no le será de mucha utilidad, ya que mysql REPL no estará conectado al terminal. Intente usar uno de los multiplexores (o dtach) que mencioné anteriormente, probablemente se adaptarán mejor a sus necesidades.Comencé a ejecutar
screen
sesiones cuando ingresé en una caja, en parte para evitar eso y, como beneficio adicional, obtengo varias pestañas, no puedo superarlo. Si estoy desconectado por algún motivo, puedo volver a conectarlo a mi sesión de pantalla.Actualizar
Para responder # 2, correría
mysql
desde un shell bash a través de una sesión de pantalla. Suena complicado, pero es solo:Puede editar su archivo ~ / .screenrc para agregar subtítulos en la parte inferior de la sesión de pantalla para que pueda realizar un seguimiento de sus pestañas, cambiar el nombre de sus pestañas, etc. Si alguna vez se desconecta, cuando vuelva a conectarse simplemente ejecute
y eso mostrará cualquier sesión separada. Para volver a conectar, simplemente ejecute algo como
O cualquiera que sea el id de la sesión de pantalla. Estás de vuelta donde lo dejaste. Sin
screen -d
embargo, debe ejecutarse como el mismo usuario que inició la sesión de pantalla, solo para su información o raíz, por supuesto. No estoy realmente seguro porque después de ingresar siempre,sudo su -
así que no tengo que sudo cada comando.fuente
screen
es sólido, no responde directamente a las dos preguntas enumeradas por el OP.