Similar a muchas preguntas anteriores, me encontré ejecutando un trabajo que desearía haber ejecutado en la pantalla. Me vi obligado a rechazar el proceso porque necesitaba desconectarme. Ahora que me he vuelto a conectar, veo que el proceso aún se está ejecutando. ¿Cómo puedo "reclamar" el proceso, para poder ver su salida y darle entrada?
Esta pregunta es distinta de simplemente mover un proceso en ejecución a la pantalla, ya que implica la reapertura de identificadores perdidos stdin / out / err.
Respuestas:
Esta es una pregunta duplicada: consulte Mover un proceso que ya se está ejecutando a la pantalla , que apunta a retty , que es un hack horrible que se describe a sí mismo y que implementa lo que siempre supuse que podría ser posible pero que nunca intenté: encuentra fd 0, 1 , y 2 (entrada, salida y error estándar, respectivamente) para el proceso y se adjunta a ellos, como un horrible parásito aberrante que no debería estar.
fuente
Al rechazar el proceso, está diciendo efectivamente que quiere ignorar los SIGHUP emitidos por el terminal. Una vez que cierre su sesión (digamos, bash), este proceso pasará a ser propiedad de init. Entonces, cuando dice que desea volver a ser propietario de un proceso después de haber renunciado a la propiedad, está diciendo que desea quitar la propiedad de otro proceso, que no está implementado, y por una buena razón. Esto simplemente no es posible hacerlo con gracia en Linux.
fuente
disown
comando específico de bash, que, a pesar del nombre, en realidad no tiene nada que ver con cambiar la propiedad del proceso.