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?

Huei
la source
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

simplement croisement
la source
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!

evamvid
la source
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.

Huei
la source
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

Ashildr
la source