0
votes

Comment exécuter des scripts Python sans connexion à l'instance active sur ordinateur

Je m'excuse s'il s'agit d'une question stupide; Je suis un débutant complet quand il s'agit de calcul en nuage. J'utilise Google Compute Instances pour exécuter des scripts Python avec support GPU. Malheureusement, il semble que le script fonctionne, mon ordinateur doit être allumé et le terminal me connectant à mon instance doit être ouvert. Je me demande s'il y a un moyen de gérer les scripts Python sur des instances dans Google Cloud complètement à distance, et simplement ssh pour voir lorsque le script est terminé.

J'ai envisagé d'utiliser des cahiers Ipython ou quelque chose de similaire, mais ce code que je suis Exécution nécessite un environnement anaconda très spécifique et est censé être exécuté via la borne.

Editer 1:

La raison pour laquelle je pense avoir la console me connecter à l'instance est Parce que j'ai essayé de le tester en écrivant un petit script pour faire des fichiers chaque minute. Mon processus était comme suit: 1. Créez une instance, SSH dans via la page Google Cloud Instances 2. Créez un nouveau script Python avec ce code: xxx

  1. J'ai ensuite couru ce code, a confirmé qu'il fonctionnait par Sshing dans une autre console.
  2. J'ai fermé la console avec le programme qui l'exécute. Après cela, les fichiers ont cessé d'être créés.

    Idéalement, je voudrais une situation dans laquelle je pourrais exécuter un tel script, fermer hors de la fenêtre du terminal et que l'exécution du script ne soit pas associée à des choses comme si j'ai la console ouverte ou si mon appareil est sur. Je voudrais juste être capable de ssh dans et voir le résultat d'un script une fois qu'il est fini.


0 commentaires

4 Réponses :


0
votes

Vous ne savez pas pourquoi vous dites que vous devez garder le terminal connecté à votre instance de calcul . Certains autres détails seront utiles. Êtes-vous manuellement dans votre instance Thru terminal et exécutez-vous le script? Est-ce comment vous voulez le faire à l'avenir?

Si vous exécutez votre script périodiquement, vous pouvez le configurer comme travail cron .

Vous pouvez également vouloir regarder les fonctions cloud pour aller sans serveur.


1 commentaires

Donc, j'ai créé un petit code de test pour voir si je devais garder la console pour l'instance. Voir la modification dans le post



0
votes

Vous pouvez utiliser des programmes tels que TMUX.

# ssh to the system
ssh user@system-blah-blah

# start a new tmux session
tmux new -s my_remote_session

# detach from session (keyboard shortcut, in sequence)
<ctrl-b> d

# attach to it back
tmux a -t my_remote_session


2 commentaires

Basé sur leur README , il semble que TMUX ne fonctionne que Pour OpenBSD, FreeBSD, NetBSD, Linux, OS X et Solaris. Connaissez-vous quelque chose qui fonctionne pour les systèmes Ubuntu? C'est ce que la machine virtuelle que j'ai installée utilise.


Ubuntu est une distribution Linux. Essayez simplement "sudo apt-get d'installation tmux" pour l'installer.



1
votes

Je suis aussi un novice total en ce qui concerne GCE et Python, vous êtes donc en bonne compagnie! J'ai eu un problème similaire lors de l'apprentissage d'utiliser GCE. J'ai choisi d'utiliser un script de démarrage, mais je ne suis pas sûr de la manière dont cela correspondra à l'environnement que vous devez configurer. La mine utilise un script Bash Boot et ressemble à quelque chose comme ceci:

#! /bin/bash

sudo apt-get update
sudo apt-get -yq install python-pip
sudo pip install --upgrade google-cloud
sudo pip install --upgrade google-cloud-storage
sudo pip install --upgrade google-api-python-client
sudo pip install --upgrade google-auth-httplib2

echo "Making directories..."

mkdir -p /home/<username>/rawdata
mkdir -p /home/<username>/processeddata
mkdir -p /home/<username>/input
mkdir -p /home/<username>/code
mkdir -p /home/<username>/and so on

echo "Setting ownership..."

sudo chown -R <username> /home/<username>

echo "Directory creation complete..."

gsutil cp gs://<bucket with code>/* /home/<username>/code/

echo "Boot complete."

nohup python /home/<username>/code/workermaster.py &


1 commentaires

Cela a fonctionné pour moi! Pour que quiconque ait le même problème, il suffit d'ajouter "Nohup" avant que ma commande Python a résolu le problème. Je peux maintenant exécuter des scripts Python, même sans connexion à la machine virtuelle, et ssh de retour pour voir les résultats!



0
votes

Pour pouvoir laisser un script exécutant et fermer la fenêtre du terminal, vous pouvez utiliser un session d'écran , cela va laisser le script exécuté (à l'intérieur de la session d'écran) et si vous fermez le terminal, il va continuer à travailler, après Cela, vous pouvez ouvrir à nouveau le terminal et connecter à la session d'écran pour voir les résultats.

Une autre option consiste à utiliser Ansible , il aide à exécuter des commandes à l'intérieur. La machine virtuelle sans se connecter, mais vous devez créer un SSH-Key afin de pouvoir se connecter avec une annulation.


0 commentaires