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 Nohup
screen
mais cela ne fonctionne pas non plus ou est-ce que quelque chose me manque?
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
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!
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.
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