Lancer des programmes en arrière plan

De Wiki du LAMA (UMR 5127)
Aller à : navigation, rechercher

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.