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.
3 Réponses :
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.
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.
Merci! Je vais essayer ça un tmux
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.
Je jetterais un œil à
tmux
, mais vous pouvez également consulter exécuter votre script en tant que démonvoici é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?