Prolonging terminal sessions/fr: Difference between revisions
No edit summary |
No edit summary Tag: Manual revert |
||
(17 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 | 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 | 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> | ||
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= | ||
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 | 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. | ||
{{box|<b> | {{box|<b>Dépendance au nœud de connexion</b> | ||
<br> | <br> | ||
Chacune de nos grappes comprend plusieurs nœuds et votre session <code>tmux</code> ou <code>screen</code> est | 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.}} | ||
==tmux== | ==tmux== | ||
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 | 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. | ||
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 29: | 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 54: | ||
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}} | 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}} | ||
Cependant, l'usage de deux (ou plus) niveaux de tmux n'est | 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). | ||
==GNU Screen== | ==GNU Screen== | ||
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 | |||
{{Command|screen -S <session name>}} | {{Command|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 <code>screen -list</code>. | |||
{{Command | {{Command | ||
|screen -list | |screen -list | ||
Line 69: | Line 68: | ||
1 Socket in /tmp/S-stubbsda. | 1 Socket in /tmp/S-stubbsda. | ||
}} | }} | ||
Pour vous attacher à une de vos sessions, utilisez <code>screen -d -r <session name></code>. | |||
Latest revision as of 16:40, 4 July 2023
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
|
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) :
- The Tao of tmux
- Getting Started With TMUX, vidéo de 24 minutes
- Turbo boost your interactive experience on the cluster with tmux, vidéo de 58 minutes
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
[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
[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
.
[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>
.