Cómo ejecutar un comando y desacoplarlo del shell
Recientemente me he encontrado en la stituación de estar transfiriendo una gran cantidad de archivos entre 2 servidores en redes distintas. Por lo general, todos los comandos que utilizo en el terminal son de limitada duración, por lo que nunca he tenido ninguna necesidad de desacoplarlos de mi sesión de shell. Pero esta vez sí, no quería dejar mi portátil enchufado durante horas sólo porque tenía que esperar a que el comando scp terminara de transferir los arhchivos. Así que os dejo un par de formas de conseguir desacoplar comandos del terminal.
Background & Disown
Es la opción que suelo utilizar aunque tiene un inconveniente ya que si el proceso que estas desacoplando escribe a stdout o stderr, el proceso puede ser terminado de forma abrupta si ocurre un overflow en el tty buffer.
- Ejecuta el comando que deseas, en mi caso scp
- Presiona Ctrl+Z para salir del proceso
- Lleva el proceso al background con el comando bg
- Desacopla el proceso en background con disown
Crear una sesión con Screen y desacoplarla
GNU Screen puede utilizarse para crear una sesión de terminal remota, que se puede desconectar y continuar ejecutándose en el servidor después de cerrar la sesión. Es de bastante utilidad puesto que puedes volver a iniciar sesión en el servidor posteriormente y volver a conectarte a la sesión.
- Crea una sesión con screen -D -R nombre_sesion
- Ejecuta tu comando, por ejemplo scp
- Desacopla el proceso apretando Ctrl+A y luego d
Deja una respuesta