Introduction
Un bureau communautaire des sentiers prépare des fiches d’itinéraires pour les visiteurs. Le programme fourni calcule des chemins dans un petit réseau fictif et dessine de véritables cartes SVG. Il produit un lot, puis attend votre choix du lot suivant et du mode de parcours. Le prochain groupe doit éviter les escaliers : laisser la première commande en arrière-plan ne suffit pas ; vous devez retrouver sa demande de saisie.
Vous démarrerez une session tmux nommée dans Terminal A, détacherez le client, puis continuerez le même processus depuis Terminal B avant d’utiliser la collection dans Maps. Une connaissance élémentaire du terminal suffit ; vous n’écrivez pas de Python et aucune expérience cartographique n’est nécessaire. Les itinéraires sont fictifs et destinés à la formation, pas à la navigation sur un vrai sentier.
Démarrer une tâche cartographique nommée
Dans cette étape, vous démarrerez une véritable tâche cartographique interactive et la laisserez attendre le lot suivant.
Le shell lit les commandes ; une tâche est un programme qu’il lance. tmux conserve un terminal et sa tâche dans un serveur en arrière-plan. Une session nommée regroupe des fenêtres contenant chacune un terminal. Un client relie le terminal du navigateur à cette session. Le détachement retire le client, tandis que le serveur et la tâche continuent. tmux ne restaure pas le travail après la destruction de la VM ou du serveur.
Les deux terminaux commencent dans /home/labex/project/trail-maps, chacun dans une session tmux distincte de la plateforme. plan.tsv est un chemin relatif : il désigne le fichier du répertoire courant. Évitez d’y imbriquer un autre tmux attaché. Lisez d’abord le plan dans Terminal A. cat affiche un fichier ; les colonnes indiquent la tâche, le lot suivant, le mode et le motif.
cat plan.tsv
La tâche survey demande le lot east en mode step-free. walking autorise les escaliers ; step-free exclut toutes les arêtes comportant des escaliers avant de calculer le plus court chemin. Le premier lot utilise walking : son itinéraire plus court peut donc légitimement être différent. Aucune connaissance géographique n’est requise.
Listez les sessions. list-sessions est une commande tmux ; conservez la session préparée trail-reference. Les noms commençant par TTYD- appartiennent à la plateforme.
tmux list-sessions
Créez trail-survey. new-session crée une session, -d la laisse détachée et -s lui attribue un nom unique. Le dernier argument entre guillemets est la commande exécutée dans son terminal. python3 lance le programme fourni ; guided choisit la tâche indépendante de ce TP. Le programme démarre directement dans la session.
tmux new-session -d -s trail-survey 'python3 /opt/labex/atlas/map-job.py guided'
Attachez-vous à cette session. attach-session sélectionne une cible avec -t. Depuis le client tmux existant de la plateforme, cette commande change la session du client sans imbriquer un autre tmux.
tmux attach-session -t trail-survey
Le chemin absolu désigne le programme préparé. Celui-ci affiche un PID, écrit deux SVG de morning, puis attend à Next batch:. Retenez ce PID : Terminal B doit afficher le même. Le programme est toujours vivant et attend une saisie ; l’absence d’invite du shell est normale. Ne répondez pas à cette question avec une commande shell.
Si la création affiche duplicate session, listez les sessions et attachez-vous à la session existante trail-survey ; ne supprimez pas ses fichiers et ne lancez pas de remplacement. Si vous voyez sessions should be nested with care, vous avez tenté un new-session attaché à l’intérieur de tmux : revenez au shell de la plateforme et utilisez la création détachée ci-dessus. Vérifiez cette étape pendant que le programme attend encore.
Continuer depuis Terminal B
Dans cette étape, vous détacherez le premier client et terminerez le lot suivant depuis un second terminal indépendant.
Placez le focus dans Terminal A. Maintenez Ctrl et appuyez sur B, relâchez les deux touches, puis appuyez sur D. Il s’agit d’un préfixe suivi d’une touche, pas de trois touches maintenues ensemble. Cette séquence envoie la commande de détachement à tmux. N’utilisez pas exit ou Ctrl+C : ils terminent un shell ou interrompent le programme au lieu de déconnecter son affichage.
Le navigateur affiche [detached (from session trail-survey)]. La plateforme lançant tmux directement, ce terminal n’a pas de shell extérieur à retrouver. Laissez-le ainsi. Ouvrez Terminal B, qui possède son propre shell persistant. Fermer un onglet ou perdre le réseau est un événement différent ; cet exercice teste volontairement le détachement et la reconnexion sur la même VM.
Listez les sessions dans Terminal B :
tmux list-sessions
trail-survey doit toujours être présente, désormais sans client attaché. Reconnectez-vous à ce nom exact :
tmux attach-session -t trail-survey
Vous devez retrouver le même PID et la question Next batch:. Si vous voyez encore une invite shell, vous n’avez pas rejoint le programme. Si une autre tâche apparaît, détachez-vous et choisissez le bon nom ; ne lui envoyez pas de réponses.
Saisissez le lot demandé à l’invite du programme. Cette valeur est une entrée du programme cartographique, pas une commande shell :
east
Il demande ensuite Route mode:. Indiquez le mode accessible du plan :
step-free
Avant d’écrire les fichiers, il affiche Plan: east / step-free et demande Build this batch? [yes/no]:. Comparez ensemble le lot et le mode. Si l’un est incorrect, saisissez no pour revenir à Next batch: dans le même processus ; les cartes originales restent intactes. Une fois le plan correct, confirmez :
yes
Le programme calcule deux autres itinéraires, écrit leurs SVG et actualise l’index. Attendez-vous à Collection ready: 4 real SVG maps and index.json.. La dernière invite, Inspection mode, maintient volontairement le processus original disponible pour inspection. Laissez-le vivre. Les noms de lots ou modes invalides sont rejetés sans perdre le premier lot : lisez l’invite et répondez de nouveau à la même question. Un choix valide mais erroné se corrige à la confirmation avec no, puis une nouvelle sélection. Actualiser le navigateur ne modifie pas le plan en attente. Après yes, la collection est définitive ; comparez-la au plan avant de valider. Ne supprimez pas de fichiers et ne redémarrez pas de processus pour faire passer une nouvelle tâche pour l’ancienne.
Le contrôle compare le processus vivant, les itinéraires exacts et l’index complet. Créer un nouveau processus donnant des résultats similaires ne constitue pas une continuation.
Utiliser la collection de cartes terminée
Dans cette étape, vous consulterez les cartes réelles et leur index exploitable par un programme tout en gardant les tâches disponibles.
Ouvrez Maps et choisissez survey/. Les deux premières fiches sont les cartes originales de morning. Les deux suivantes appartiennent à east en mode step-free. Sur l’itinéraire east vers Cabin, cliquez sur Download SVG et enregistrez le SVG. Le tracé vert doit passer par Orchard, évitant les arêtes avec escaliers de Bridge. Le premier itinéraire morning vers Cabin peut emprunter Bridge. Ces différences résultent du calcul sur le graphe selon le mode choisi, pas d’un changement d’étiquette.
Revenez à la collection et lisez l’itinéraire east vers Lookout. Son parcours et sa durée figurent aussi dans index.json. Pour examiner ces données, restez dans Terminal B et appuyez sur Ctrl+B, puis C. Cela crée une fenêtre tmux avec un shell pendant que le programme continue dans la fenêtre 0. Une fenêtre est un autre terminal de la même session nommée ; elle ne redémarre pas le programme. L’invite shell indique que vous pouvez de nouveau saisir des commandes.
Utilisez cd pour définir explicitement le répertoire courant. Le chemin absolu commence par / et fonctionne donc quel que soit le répertoire initial du nouveau shell :
cd /home/labex/project/trail-maps
ls liste les noms d’un répertoire. Confirmez la présence des quatre cartes, du lecteur HTML, de l’index et des informations du processus :
ls survey
Affichez l’index à l’aide de son chemin relatif :
cat survey/index.json
Chaque enregistrement indique le lot, le mode, la destination, les minutes et la séquence de nœuds calculée. Les cartes originales restent à côté des nouvelles. C’est une collection utilisable, pas un simple message de fin.
Listez de nouveau les sessions :
tmux list-sessions
trail-survey et trail-reference doivent toutes deux rester présentes. Une session détachée peut continuer à fonctionner. Les sessions TTYD- de la plateforme ne concernent pas ces tâches. N’utilisez pas kill-server pour nettoyer : toutes les sessions, référence comprise, seraient terminées. Conservez l’environnement jusqu’à la réussite des contrôles. Pour revenir au programme original, appuyez sur Ctrl+B, puis sur le chiffre 0. Cela sélectionne la fenêtre 0 ; l’invite d’inspection et le même PID doivent toujours apparaître.
Vous avez poursuivi fonctionnellement un processus entre deux terminaux du navigateur. Cela ne démontre pas la récupération après redémarrage de VM, le changement de machine physique, les reprises automatiques ni la reconnexion réseau de la plateforme.
Résumé
Vous avez créé une session tmux nommée, détaché un client et rejoint le même programme cartographique vivant depuis un autre terminal pour lui répondre. La collection conserve les cartes de marche originales et ajoute les cartes accessibles demandées avec leur index exact. Vous avez aussi préservé la session de référence. La continuité dépend du maintien en vie du serveur tmux et de la VM.



