Enviar un proceso a segundo plano una vez ya lanzado


Alguna vez me ha pasado que he lanzado a través de una terminal una instrucción que tarda mucho en ejecutarse y he olvidado ejecutar la herramienta multiplexora screen para desacoplarla de la terminal, por lo que la terminal se quedará bloqueada hasta que termine.

Para conseguir desacoplar un proceso que ya se esté ejecutando hay que hacer lo siguiente:

  1. En la terminal donde se está ejecutando el proceso pulsa Ctrl + Z para suspenderlo.
  2. Ahora ejecuta bg para continuar la ejecución de ese proceso pero en segundo plano (la instrucción bg sin parámetros se aplica por defecto sobre el último proceso suspendido).
  3. Ejecuta la orden jobs -l para obtener un listado de jobs en segundo plano y sus identificadores.
  4. Luego ejecuta disown -h [job_id] indicando en [job_id] el número del job al que pertenece el proceso.
  5. ¡Ahora ya puedes cerrar la terminal y el proceso seguira ejecutándose en segundo plano!
  6. De esta forma no podras recuperar el proceso desde otra terminal, pero por lo menos podrás darle el tiempo que necesite para que termine su ejecución.

De todas formas, en 2019 Red Hat ya descontinuó ("deprecó" que dirán algunos) la utilidad screen (a partir de RHEL 8) en favor de tmux, así que habrá que ir acostumbrándose a usarla ya que tiene pinta de que se convertirá en el estándar de facto en breve... Mas info aqui

Anterior Siguiente