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

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.