Continuer les tâches / tâches en arrière-plan SSH lors de la fermeture de SSH


27

J'ai la même question qu'ici mais même au-delà.

Si je me déconnecte / quitte la connexion SSH, mon programme doit être exécuté en arrière-plan. Avant de quitter, je tape bget jobspour vérifier la tâche en arrière-plan, mais après avoir quitté SSH, le programme ne s'exécute pas, il se ferme lorsque je ferme la fenêtre SSH.

Que puis-je faire si je veux que mon programme continue à fonctionner après la fermeture de la fenêtre SSH? Je l'utilise nohup screenmais cela ne fonctionne pas non plus ou est-ce que je manque quelque chose?


Bienvenue sur Super User! S'il vous plaît ne mettez pas votre réponse dans la question. Postez-la comme réponse ci-dessous une fois que vous pouvez (environ 7 heures) en utilisant le bouton Répondre à votre question . Je vous remercie. (Notez également qu'il n'est pas nécessaire d'ajouter des ajouts <br/>à votre message. Faites juste des paragraphes si nécessaire. Et tant que vous y êtes, utilisez la
casse

BTW pas besoin d'utiliser bgou nohuplors de l'utilisation screen. Aussi cette question est liée.
justbrowsing

vous faites vérifier ce thread @ stack overflow stackoverflow.com/questions/285015/…
Ashildr

Réponses:


46

Lorsque vous utilisez, screenvous devez vous détacher avec CTRL+A+ Davant de quitter ssh.

Sinon, si vous souhaitez exécuter un processus directement avec screen, vous pouvez utiliser

screen -dmSL [session name] [commands]
  • -d démarre une session d'écran et s'en détache immédiatement
  • -m force la création d'une nouvelle session d'écran
  • -S vous permet de donner un nom à la session
  • -L active la connexion à ~/screenlog.0

Exemple:

screen -dmSL workstuff myscript.sh

Vous pouvez alors soit:

reprendre plus tard en utilisant screen -x workstuff

ou

vérifier le fichier journal less -r ~/screenlog.0


14

Utilisez tmux. Je ne suis même pas sûr si screenest encore en développement actif. C'est un peu une question de préférence, mais en tant que personne qui l'utilise tmux, je peux témoigner que l'installation a duré environ 5 minutes et a parfaitement fonctionné.

Sur un système basé sur Debian (sur la machine distante):

sudo apt-get install tmux

puis entrez tmuxpour entrer, exécutez le processus dont vous avez besoin, puis appuyez sur Ctrl+ Bpuis D(cela laisse la session tmux). Ensuite, vous pouvez vous déconnecter de SSH.

Lorsque vous devez revenir / vérifier à nouveau, démarrez SSH et entrez tmux attach. Cela vous ramènera à votre tmuxsession.

tmuxa beaucoup plus de capacités, comme détaillé ici. Mais, cela devrait résoudre votre problème immédiat.

Bonne chance!


7

Enfin, je l'ai résolu en utilisant screen:

En mode écran, détachez-le avec CtrlAD. Ensuite, vous pouvez fermer la fenêtre SSH.


5

nohup use: La première des commandes ci-dessous lance le programme abcd en arrière-plan de manière à ce que la déconnexion suivante ne l'arrête pas.

$ nohup abcd &

$ exit

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.