Prolonger une session dans un terminal

Revision as of 14:30, 4 July 2023 by Diane27 (talk | contribs) (Created page with "{| class="wikitable" |- ! Commande !! Description |- | <code>tmux</code> || Démarrer le serveur |- | <code>Ctrl+B D</code> || Se déconnecter du serveur |- | <code>tmux a</code> || Se reconnecter au serveur |- | <code>Ctrl+B C</code> || Créer une nouvelle fenêtre |- | <code>Ctrl+B N</code> || Aller à la prochaine fenêtre |- | <code>Ctrl+B [</code> || Activer le mode copie pour défilement avec la souris et les touches page suivante et page précédente |- | <code>...")
Other languages:

Pour soumettre et faire le suivi des tâches, modifier des fichiers et plusieurs autres opérations, vous aurez peut-être besoin de vous connecter à une grappe via SSH. Il est quelquefois nécessaire de garder la connexion active pendant plusieurs heures, même plusieurs jours et nous décrivons ici certaines techniques pour ce faire.

Configuration de SSH

Une solution simple pour prolonger une connexion est de modifier la configuration de votre client SSH. Avec MacOS et Linux, cette configuration se trouve dans $HOME/.ssh/config alors qu'avec Windows elle est dans C:\Users\<username>\.ssh\config. Si le fichier n'existe pas, vous devez le créer at ajouter les lignes

Host *
    ServerAliveInterval 240

Par la connexion SSH, ceci transmet un signe de vie à un serveur distant (comme une grappe de l'Alliance) à toutes les 240 secondes (4 minutes), ce qui devrait garder la connexion active même si elle est inactive pendant quelques heures.

Multiplexeur de terminal

The programs tmux and screen are examples of a terminal multiplexer—a program which allows you to detach your terminal session entirely, where it will keep on running on its own until you choose to reattach to it. With such a program, you can logout from the cluster, turn off the workstation or hibernate the laptop you use to connect to the cluster and when you're ready to start working again the next day, reattach to your session and start from right where you left off.

Login node dependency
Each of our clusters has several login nodes and your tmux or screen session is specific to a login node. If you wish to reattach to a session, you must ensure you're connected to the right login node, which of course means remembering which login node you were using when you started tmux or screen. Login nodes may also occasionally be rebooted, which will kill any detached terminal sessions on that node.

tmux

The tmux software is a terminal multiplexer, allowing multiple virtual sessions in a single terminal session. You can thus disconnect from an SSH session without interrupting its process(es).

Pour une introduction à tmux :

Aide-mémoire

Voyez la documentation complète.

Commande Description
tmux Démarrer le serveur
Ctrl+B D Se déconnecter du serveur
tmux a Se reconnecter au serveur
Ctrl+B C Créer une nouvelle fenêtre
Ctrl+B N Aller à la prochaine fenêtre
Ctrl+B [ Activer le mode copie pour défilement avec la souris et les touches page suivante et page précédente
Esc Désactiver le mode copie

Launch tmux inside a job submitted through tmux

If you submit a job with tmux and try to start tmux within the same job, you will get the lost server error message. This happens because the $TMUX environment variable pointing to the tmux server is propagated to the job. The value of the variable is not valid and you can reset it with:
 
[name@server ~]$ unset TMUX

However, nested use of tmux is not recommended. To send commands to a nested tmux, one has to hit Ctrl+B twice; for example, to create a new window, one has to use Ctrl+B Ctrl+B C. Consider using screen inside your job (if you are using tmux on a login node).

GNU Screen

The screen program is another widely used terminal multiplexer. To create a detached terminal session, you can use the following command

 
[name@server ~]$ screen -S <session name>

It's a good idea to give a descriptive name to your terminal sessions, making it easier to identify them later. You can use the command screen -list to see a list of your detached terminal sessions on this node,

 
[name@server ~]$ screen -list
There is a screen on:
        164133.foo      (Attached)
1 Socket in /tmp/S-stubbsda.

You can attach to one of your sessions using the command screen -d -r <session name>.