« Lancer des programmes en arrière plan » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
Ligne 1 : Ligne 1 :
Sous Linux, quand on ferme notre session, tous les programmes qui nous appartiennent sont "tués". Cela est problématique notamment si vous souhaitez lancer des calculs sur une machine distante :
Cette solution permet de lancer un programme, de fermer votre session et de plus tard retrouver votre programme, comme si vous n'aviez pas quitté l'ordinateur.
* la connexion risque de couper
* vous ne pouvez pas éteindre ou mettre en veille votre ordinateur


Plusieurs solutions permettent de contourner ce problème.
Exemple : depuis chez moi, je veux lancer un calcul sur mon PC du labo, et le retrouver le lendemain quand je viendrai travailler.


= Le symbole bash "&" =
Prérequis :
* La machine distante (celle qui fera tourner le programme) est une machine Linux.
* Vous connaissez l'adresse IP de la machine distante.
* Vous pouvez vous connecter en SSH à la machine distante (c'est le cas de votre machine au labo par exemple - il vous faudra peut-être le VPN depuis l'extérieur).
* Le programme "tmux" doit être installé sur la machine distante (sous Debian/Ubuntu : <code># apt-get install tmux</code>).


Si vous lancer un programme en ajoutant " &" à la fin, celui est "détaché" de votre session :
# Se connecter en SSH à la machine : <code>$ ssh nom_utilisateur@adresse_ip_machine_distante</code>
* il continuera à tourner même si vous fermer votre session
* mais vous ne pourrez pas reprendre la main dessus

= tmux et screen =

Ces deux programmes sont assez similaires, mais il vaut mieux privilégier tmux (screen est plus ancien et apparemment plein de failles de sécurité). Seul tmux est décrit ici.

Si vous lancez un programme "dans" tmux :
* il continuera à tourner même si vous fermez votre session
* vous pourrez reprendre la main sur votre programme plus tard

tmux doit être installé sur la machine sur laquelle vous lancer votre programme :

<code>
$ sudo apt-get install tmux
</code>

Pour utiliser tmux :

# Ouvrir une session sur la machine, éventuellement par SSH
# Ouvrir une "fenêtre" tmux : <code>$ tmux</code>
# Ouvrir une "fenêtre" tmux : <code>$ tmux</code>
# Lancer votre programme normalement : <code>$ ./mon_super_programme</code>
# Lancer votre programme normalement : <code>$ ./mon_super_programme</code>
# À partir de là, la connexion réseau peut couper, votre programme tournera toujours. Pour vous déconnecter proprement :
# Détacher la "fenêtre" tmux en tapant Ctrl+B puis la touche "D".
## Détacher la "fenêtre" tmux en tapant Ctrl+B puis la touche "D".
# Fermer la connexion SSH avec la commande <code>$ exit</code>. Votre programme tourne toujours.
## Fermer votre session avec la commande <code>$ exit</code>.
# Plus tard, se connecter sur la machine où a tourné le programme, et "récupérer la fenêtre tmux" : <code>tmux attach</code>
# Pour reprendre la main sur votre programme :
## Rouvrir une session sur la machine
## Récupérer la "fenêtre" tmux : <code>tmux attach</code>
# Quand votre programme s'est terminé, fermer la fenêtre tmux avec la commande <code>$ exit</code> habituelle.
# Quand votre programme s'est terminé, fermer la fenêtre tmux avec la commande <code>$ exit</code> habituelle.

Dernière version du 20 mars 2015 à 12:21

Sous Linux, quand on ferme notre session, tous les programmes qui nous appartiennent sont "tués". Cela est problématique notamment si vous souhaitez lancer des calculs sur une machine distante :

  • la connexion risque de couper
  • vous ne pouvez pas éteindre ou mettre en veille votre ordinateur

Plusieurs solutions permettent de contourner ce problème.

Le symbole bash "&"

Si vous lancer un programme en ajoutant " &" à la fin, celui est "détaché" de votre session :

  • il continuera à tourner même si vous fermer votre session
  • mais vous ne pourrez pas reprendre la main dessus

tmux et screen

Ces deux programmes sont assez similaires, mais il vaut mieux privilégier tmux (screen est plus ancien et apparemment plein de failles de sécurité). Seul tmux est décrit ici.

Si vous lancez un programme "dans" tmux :

  • il continuera à tourner même si vous fermez votre session
  • vous pourrez reprendre la main sur votre programme plus tard

tmux doit être installé sur la machine sur laquelle vous lancer votre programme :

$ sudo apt-get install tmux

Pour utiliser tmux :

  1. Ouvrir une session sur la machine, éventuellement par SSH
  2. Ouvrir une "fenêtre" tmux : $ tmux
  3. Lancer votre programme normalement : $ ./mon_super_programme
  4. À partir de là, la connexion réseau peut couper, votre programme tournera toujours. Pour vous déconnecter proprement :
    1. Détacher la "fenêtre" tmux en tapant Ctrl+B puis la touche "D".
    2. Fermer votre session avec la commande $ exit.
  5. Pour reprendre la main sur votre programme :
    1. Rouvrir une session sur la machine
    2. Récupérer la "fenêtre" tmux : tmux attach
  6. Quand votre programme s'est terminé, fermer la fenêtre tmux avec la commande $ exit habituelle.