Prolonging terminal sessions/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(Updating to match new version of source page)
No edit summary
Tag: Manual revert
 
(26 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages />
<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/fr|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.  
Pour soumettre et faire le suivi des tâches, modifier des fichiers et plusieurs autres opérations, vous aurez sans doute besoin de vous connecter à une grappe via [[SSH/fr|SSH]]. Il est parfois nécessaire de garder la connexion active pendant plusieurs heures, même plusieurs jours. Nous décrivons ici certaines techniques pour ce faire.  


=Configuration de SSH=
=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 <code>$HOME/.ssh/config</code> alors qu'avec Windows elle est dans <code>C:\Users\<username>\.ssh\config</code>. Si le fichier n'existe pas, vous devez le créer at ajouter les lignes  
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 <code>$HOME/.ssh/config</code> alors qu'avec Windows elle est dans <code>C:\Users\<username>\.ssh\config</code>. Si le fichier n'existe pas, vous devez le créer at ajouter les lignes  
<source>
<source>
Host *
Host *
     ServerAliveInterval 240
     ServerAliveInterval 240
</source>
</source>
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.
Ceci transmet un signe de vie au serveur distant (comme une grappe de l'Alliance) à toutes les 240 secondes (4 minutes), ce qui devrait garder la connexion vivante même si elle est inactive pendant quelques heures.


=Multiplexeur de terminal=
=Multiplexeur de terminal=


<div lang="en" dir="ltr" class="mw-content-ltr">
Les programmes <code>tmux</code> et <code>screen</code> sont des exemples de multiplexeurs de terminal qui vous permettent de complètement détacher une session de terminal qui restera active jusqu'à ce que vous vous y rattachiez. Vous pouvez donc vous déconnecter de la grappe, fermer le poste de travail ou le mettre en veille, puis reprendre le travail le lendemain en vous rattachant à la même session.  
The programs <code>tmux</code> and <code>screen</code> 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.  
{{box|<b>Dépendance au nœud de connexion</b>
{{box|<b>Login node dependency</b>
<br>
<br>
Each of our clusters has several login nodes and your <code>tmux</code> or <code>screen</code> 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 <code>tmux</code> or <code>screen</code>. Login nodes may also occasionally be rebooted, which will kill any detached terminal sessions on that node.}}
Chacune de nos grappes comprend plusieurs nœuds de connexion et votre session <code>tmux</code> ou <code>screen</code> est lancée sur un nœud particulier. Pour vous rattacher à une session, vous devez utiliser le même nœud de connexion que celui où vous avez lancé <code>tmux</code> ou <code>screen</code>. Il arrive qu'un nœud de connexion soit redémarré, ce qui élimine les sessions qui se trouvent sur ce nœud; dans un tel cas, vos sessions et tous les processus associés seront perdus.}}   
</div>    


==tmux==
==tmux==


<div lang="en" dir="ltr" class="mw-content-ltr">
Le logiciel [https://en.wikipedia.org/wiki/Tmux tmux] est un multiplexeur de terminal qui permet plusieurs sessions virtuelles à l'intérieur d'une même session de terminal. Vous pouvez donc vous déconnecter d'une session SSH sans que les processus soient affectés.
The [https://en.wikipedia.org/wiki/Tmux 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).
</div>


Pour une introduction à tmux :
Pour une introduction à tmux (en anglais) :
* [https://leanpub.com/the-tao-of-tmux/read <i>The Tao of tmux</i>]  
* [https://leanpub.com/the-tao-of-tmux/read <i>The Tao of tmux</i>]  
* [https://www.youtube.com/watch?v=252K9lrRdMU <i>Getting Started With TMUX</i>], vidéo de 24 minutes
* [https://www.youtube.com/watch?v=252K9lrRdMU <i>Getting Started With TMUX</i>], vidéo de 24 minutes
Line 33: Line 29:
===Aide-mémoire===
===Aide-mémoire===


[http://hyperpolyglot.org/multiplexers Voyez la documentation complète].
[http://hyperpolyglot.org/multiplexers Voyez la documentation complète (en anglais)].


{| class="wikitable"
{| class="wikitable"
Line 54: Line 50:
|}
|}


<div lang="en" dir="ltr" class="mw-content-ltr">
===Utiliser tmux dans une tâche soumise par tmux===  
===Launch tmux inside a job submitted through tmux===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Si vous utilisez tmux pour soumettre une tâche et que vous tentez de lancer tmux à l’intérieur de cette tâche, vous obtiendrez le message d'erreur <code>lost server</code>. Ceci est dû au fait que la variable d'environnement <code>$TMUX</code>, qui pointe vers le serveur tmux sur le nœud de connexion, est propagée à la tâche. La valeur de la variable n'est donc pas valide. Vous pouvez la réinitialiser avec {{Command|unset TMUX}}
If you submit a job with tmux and try to start tmux within the same job, you will get the <code>lost server</code> error message. This happens because the <code>$TMUX</code> 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: {{Command|unset TMUX}}
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Cependant, l'usage de deux (ou plus) niveaux de tmux n'est pas recommandé. Pour envoyer des commandes à un tmux imbriqué, il faut taper deux fois les touches <code>Ctrl+B</code>; par exemple, pour créer une fenêtre, il faut taper <code>Ctrl+B Ctrl+B C</code>. Considérez plutôt d'utiliser GNU Screen (ci-dessous) à l'intérieur de vos tâches (si vous utilisez tmux sur un nœud de connexion).
However, nested use of tmux is not recommended. To send commands to a nested tmux, one has to hit <code>Ctrl+B</code> twice; for example, to create a new window, one has to use <code>Ctrl+B Ctrl+B C</code>. Consider using [[#GNU Screen | screen]] inside your job (if you are using tmux on a login node).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
==GNU Screen==
==GNU Screen==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Le programme [https://en.wikipedia.org/wiki/GNU_Screen GNU Screen] est un autre multiplexeur de terminal souvent utilisé. Créez une session de terminal détachée avec
The [https://en.wikipedia.org/wiki/GNU_Screen GNU Screen] program is another widely used terminal multiplexer. To create a detached terminal session, you can use the following command
{{Command|screen -S <session name>}}
{{Command|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 <code>screen -list</code> to see a list of your detached terminal sessions on this node,
Donnez à vos sessions des noms faciles à retenir. Pour voir la liste des sessions détachées sur un nœud, utilisez la commande <code>screen -list</code>.
{{Command
{{Command
|screen -list
|screen -list
Line 81: Line 68:
1 Socket in /tmp/S-stubbsda.
1 Socket in /tmp/S-stubbsda.
}}
}}
You can attach to one of your sessions using the command <code>screen -d -r <session name></code>.
Pour vous attacher à une de vos sessions, utilisez <code>screen -d -r <session name></code>.
</div>

Latest revision as of 16:40, 4 July 2023

Other languages:

Pour soumettre et faire le suivi des tâches, modifier des fichiers et plusieurs autres opérations, vous aurez sans doute besoin de vous connecter à une grappe via SSH. Il est parfois nécessaire de garder la connexion active pendant plusieurs heures, même plusieurs jours. 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

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

Multiplexeur de terminal

Les programmes tmux et screen sont des exemples de multiplexeurs de terminal qui vous permettent de complètement détacher une session de terminal qui restera active jusqu'à ce que vous vous y rattachiez. Vous pouvez donc vous déconnecter de la grappe, fermer le poste de travail ou le mettre en veille, puis reprendre le travail le lendemain en vous rattachant à la même session.

Dépendance au nœud de connexion
Chacune de nos grappes comprend plusieurs nœuds de connexion et votre session tmux ou screen est lancée sur un nœud particulier. Pour vous rattacher à une session, vous devez utiliser le même nœud de connexion que celui où vous avez lancé tmux ou screen. Il arrive qu'un nœud de connexion soit redémarré, ce qui élimine les sessions qui se trouvent sur ce nœud; dans un tel cas, vos sessions et tous les processus associés seront perdus.

tmux

Le logiciel tmux est un multiplexeur de terminal qui permet plusieurs sessions virtuelles à l'intérieur d'une même session de terminal. Vous pouvez donc vous déconnecter d'une session SSH sans que les processus soient affectés.

Pour une introduction à tmux (en anglais) :

Aide-mémoire

Voyez la documentation complète (en anglais).

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

Utiliser tmux dans une tâche soumise par tmux

Si vous utilisez tmux pour soumettre une tâche et que vous tentez de lancer tmux à l’intérieur de cette tâche, vous obtiendrez le message d'erreur lost server. Ceci est dû au fait que la variable d'environnement $TMUX, qui pointe vers le serveur tmux sur le nœud de connexion, est propagée à la tâche. La valeur de la variable n'est donc pas valide. Vous pouvez la réinitialiser avec

Question.png
[name@server ~]$ unset TMUX

Cependant, l'usage de deux (ou plus) niveaux de tmux n'est pas recommandé. Pour envoyer des commandes à un tmux imbriqué, il faut taper deux fois les touches Ctrl+B; par exemple, pour créer une fenêtre, il faut taper Ctrl+B Ctrl+B C. Considérez plutôt d'utiliser GNU Screen (ci-dessous) à l'intérieur de vos tâches (si vous utilisez tmux sur un nœud de connexion).

GNU Screen

Le programme GNU Screen est un autre multiplexeur de terminal souvent utilisé. Créez une session de terminal détachée avec

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

Donnez à vos sessions des noms faciles à retenir. Pour voir la liste des sessions détachées sur un nœud, utilisez la commande screen -list.

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

Pour vous attacher à une de vos sessions, utilisez screen -d -r <session name>.