3
votes

Comment puis-je garder un script python sur un serveur distant en cours d'exécution après la fermeture de SSH?

J'ai codé un robot de négociation d'actions en Python3. Je l'ai hébergé sur un serveur (Ubuntu 18.10) dans lequel j'utilise iTerm pour SSH. Vous vous demandez comment maintenir le script en cours d'exécution pour que lorsque je quitte ma session, il ne tue pas le processus actif

Fondamentalement, je veux SSH sur mon serveur, démarrer le script puis fermer et y revenir lorsque le temps sera écoulé pour arrêter le processus.


2 commentaires

Je jetterais un œil à tmux , mais vous pouvez également consulter exécuter votre script en tant que démon


voici également une bonne question / réponse sur AskUbuntu à propos de Comment conserver les processus en cours d'exécution après la fin de la session ssh?


3 Réponses :


0
votes

Utiliser tmux est une bonne option. Vous pouvez également exécuter la commande avec un & à la fin, ce qui lui permet de s'exécuter en arrière-plan.

https://tmuxcheatsheet.com/


0 commentaires

2
votes

Vous pouvez utiliser l'écran

screen -ls

screen -r $screen_running

De là, vous pourrez fermer votre terminal ssh. Revenez plus tard et exécutez

sudo apt-get install screen

screen 

./run-my-script

Ctrl-A then D to get out of your screen

L'écran en cours d'exécution est généralement les 5 premiers chiffres que vous voyez après avoir répertorié tous les écrans. Vous pouvez voir si votre script est toujours en cours d'exécution ou si vous avez ajouté la journalisation, vous pouvez voir où vous vous trouvez dans le processus.


1 commentaires

Merci! Je vais essayer ça un tmux



2
votes

Vous pouvez utiliser nohup et ajouter & à la fin de votre commande pour quitter en toute sécurité votre session sans tuer le processus d'origine. Par exemple, si le nom de votre script est script.py :

nohup python3 script.py &

Normalement, lors de l'exécution d'une commande en utilisant & et en quittant le shell par la suite, le shell terminera la sous-commande avec le signal de raccrochage ( kill -SIGHUP ). Cela peut être évité en utilisant nohup , car il capte le signal et l'ignore afin qu'il n'atteigne jamais l'application réelle.


0 commentaires