web-dev-qa-db-fra.com

SSH lors de la fermeture de SSH

J'ai la même question que 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 bg et jobs pour 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? J'utilise Nohupscreen mais cela ne fonctionne pas non plus ou est-ce que quelque chose me manque?

26
Huei

Lorsque vous utilisez screen vous devez détacher avec CTRL+A+D avant 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 sépare 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 journalisation sur ~/screenlog.0

exemple:

screen -dmSL workstuff myscript.sh

Vous pouvez alors soit:

reprendre plus tard en utilisantscreen -x workstuff

ou

consulter le fichier journalless -r ~/screenlog.0

43
justbrowsing

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

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

Sudo apt-get install tmux

puis entrez tmux pour entrer, exécutez le processus dont vous avez besoin et appuyez sur Ctrl+B puis D (cela quitte 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 session tmux.

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

Bonne chance!

14
evamvid

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

En mode écran, détachez-le à l'aide de CtrlAD. Ensuite, vous pouvez fermer la fenêtre SSH.

6
Huei

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

5
Ashildr