Semblable à de nombreuses questions précédentes, je me suis retrouvé à exécuter un travail que j'aurais aimé exécuter à l'écran. J'ai été obligé de renier le processus parce que je devais me déconnecter. Maintenant que je me suis reconnecté, je constate que le processus est toujours en cours d'exécution. Comment puis-je "récupérer" le processus, afin que je puisse voir sa sortie et lui donner une entrée?
Cette question est distincte du simple déplacement d'un processus en cours d'exécution vers l'écran, en ce qu'elle implique la réouverture des poignées stdin / out / err perdues.
Réponses:
C'est une question en double - voir Déplacer un processus déjà en cours d'exécution vers Screen , qui pointe vers retty , qui est un horrible hack auto-décrit implémentant ce que j'avais toujours pensé être possible mais jamais vraiment essayé: il trouve fd 0, 1 et 2 (standard in, out et error, respectivement) pour le processus et s'y attache, comme un horrible parasite aberrant qui ne devrait pas l'être.
la source
En reniant le processus, vous dites en fait que vous voulez qu'il ignore les SIGHUP émis par le terminal. Une fois que vous fermez votre session (disons, bash), ce processus deviendra alors la propriété d'init. Donc, lorsque vous dites que vous souhaitez reprendre possession d'un processus après avoir renoncé à la propriété, vous dites que vous souhaitez retirer la propriété d'un autre processus - qui n'est pas implémenté, et pour une bonne raison. Ce n'est tout simplement pas possible de le faire gracieusement sous Linux.
la source
disown
commande spécifique à bash, qui, malgré son nom, n'a en fait rien à voir avec la modification de la propriété du processus.