Hay ocasiones en las que lanzamos un proceso en la terminal que
va a tardar mucho tiempo en finalizar y nos vemos obligados a mantener abierta
esa terminal, porque cerrarla supone matar el proceso que hemos lanzado. Bueno,
es incómodo, pero tampoco mortal.
El problema viene cuando estas conectado por SSH y tienes
que lanzar ese proceso. Si falla tu conexión, te desconectará, la sesión se
cerrara y el proceso morirá haciéndote perder todo tu trabajo. Mal asunto.
Pero todo en esta vida tiene solución. Y la solución es bien
sencilla en este caso. Solo tienes que anteponer el comando nohup al que tú
quieras poner. Así, por ejemplo,
imaginemos que tenemos que lanzar un
comando tal que así:
En lugar de lanzarlo así, pondremos:
Y ya nos importa bien poco que el ADSL nos juegue una mala
pasada y perdamos la conexión de SSH, porque el proceso seguirá a lo suyo hasta
el fin.
Además, si queremos seguir trabajando con esa terminal o esa
conexión SSH sin esperar a que el proceso termine, añadimos al final el carácter
& para que todo se marche al segundo plano (background) y podamos seguir a
lo nuestro.
- nohup comando-o-script-que-tarda-muchiiiiiiiiiiisimo opciones opciones y-mas-opciones &
Y ya para rizar el rizo, nohup nos generará un fichero
llamado nohup.out que es una especie de log del proceso, donde nohup enviará
todo lo que normalmente iría a la salida standar. Muy útil para ver qué ha
fallado si las cosas no salieron bien, y que yo suelo borrar sin pensar.
Por algo soy un Bruto con Debian
P.D. Mis agradecimiento a mi compi de curro Isma, que es
quien me ha descubierto el comando
Más de una vez he necesitado hacerlo, pensaba que no se podía y ni siquiera buscaba una posible solución. ¡Gracias!
ResponderEliminarGracias a ti por leerme
EliminarGracias, como dice Antonio crei que no se podia y que era algo normal. Muchas gracias. PD: Muy buen blog, te leo constantemente. Un saludo
ResponderEliminarnohup es genial! me ha salvado la vida más de una vez. Otra cosa que me traía de cabeza, es el fichero nohup.out que genera. Cuando me hizo falta, era para dejar un comando puesto en una Raspberry, tenía poca memoria y el programa mucha salida; así que al final al cabo de unas semanas petaba. He aquí: nohup comando >/dev/null 2>&1 & evita que se cree el log.
ResponderEliminarUn saludo, el blog genial!