Question Est-il possible de détacher un processus de son terminal? (Ou, "j'aurais dû utiliser l'écran!") [Dupliquer]


Dupliquer possible:
Est-ce que je peux nohup / screen un processus déjà commencé? 

Sous Unix (plus précisément Linux), j'ai démarré un travail dans une session standard ssh-> bash. J'aimerais quitter le travail bientôt, mais je réalise maintenant que le travail va prendre plusieurs heures.

Si je venais juste de commencer ce travail à l'écran, je pourrais me détacher et rentrer chez moi. Mais je n'ai pas.

Existe-t-il un moyen de déconnecter le travail de sa session ssh afin que je puisse éteindre mon ordinateur (en interrompant la connexion TCP et en supprimant la session ssh) tout en maintenant le programme en cours d'exécution?

Je me moque de sa sortie - en fait, j'ai redirigé stdout vers un fichier. Je veux juste que tout soit fini.


116
2017-07-01 22:16


origine




Réponses:


Vous pouvez appuyer sur ctrl-z pour interrompre le processus, puis exécuter bg pour le faire fonctionner en arrière-plan.

Vous pouvez afficher une liste numérotée de tous les processus mis en arrière-plan de cette manière avec jobs.

Ensuite, vous pouvez courir disown %1 (remplacer 1 avec le numéro de processus fourni par jobs) pour détacher le processus du terminal.

Malgré le nom, le processus vous appartiendra toujours après avoir exécuté disown, il sera simplement détaché du terminal dans lequel vous l'avez démarré.

Cette réponse a plus d'informations


156
2017-07-01 22:26



Est-il sécuritaire d'essayer cette procédure? Des pièges? - ndemou


Je crois que le commandement que vous recherchez est "désavoué"


17
2017-08-19 16:32





Depuis votre shell bash:

control+z

Ensuite, pour continuer à exécuter le travail en arrière-plan:

bg

Plus tard, vous pouvez taper jobs  pour voir si votre processus est toujours en cours d'exécution.


8
2017-07-01 22:23



Ne sera-t-il pas tué quand je ferme ma coquille? - mike
Non, du moins pas si vous utilisez bash. Le travail se détachera du PPID de votre session ssh et sera toujours exécuté sur le serveur sous votre nom d'utilisateur. - Joe
Les instructions ci-dessus entraînent la fermeture du processus lorsque vous fermez le shell. En outre, vous devez exécuter la commande / builtin 'désavouée' (celle-ci est en bash), ce qui permettra de dissocier le processus du shell et de ne pas envoyer le signal HUP au processus à la sortie. - Mark
Sur ma version de bash [version 3.2.25 (1) (i686-redhat-linux-gnu)], j'ai testé le processus et je n'ai pas eu à désavouer le travail avant de déconnecter. Le PID enfant s'est déconnecté du PID parent et a continué à s'exécuter sous mon nom d'utilisateur sans interruption. YMMV, je suppose. - Joe


Lors de l'utilisation reptyr Dans l’écran intérieur, vous pouvez déplacer le processus (ou sa sortie) dans l’écran.


5
2018-05-16 14:07





Utilisation
commande nohup &

Est beau:
root @ index: ~ nohup / usr / bin / curl localhost / begemot.php &
[1] 894
root @ index: ~ # nohup: ignorer l'entrée et ajouter le résultat à `nohup.out '

et sortie de ce terminal, une tâche continue à être poursuivie ...

5
2018-05-24 09:23





Utiliser crtl-Z alors bg ou utiliser & lors de l'exécution de la commande n'est pas fiable à 100%. Cela fonctionnera dans la plupart des cas, mais ne fonctionnera peut-être pas comme prévu dans certains cas (utilisation des E / S, ...).
L'écran est une solution fiable.


4
2017-07-01 22:34



Notez que retty (pasky.or.cz/~pasky/dev/retty) est un outil qui peut vous permettre de déplacer un processus exécuté en dehors de l’écran vers l’écran. Il peut être utile de placer votre travail dans un écran si vous oubliez. Ensuite, vous pouvez détacher l'écran en toute sécurité sans que le travail ne risque de s'arrêter. - radius


J'ai pris l'habitude screen à exécuter automatiquement lorsque je me connecte aux hôtes que j'utilise régulièrement, pour éviter ce problème.

http://tlug.dnho.net/?q=node/239 est une façon de le faire, même s’il existe d’autres variantes.

M'a sauvé une ou deux fois en cas de déconnexion imprévue en cours de session et aurait autrement oublié de commencer screen avant que je commence quelque chose de long.


4
2017-07-01 22:50