Introducción
Una oficina comunitaria de senderos prepara tarjetas de rutas para visitantes. El programa proporcionado calcula caminos en una pequeña red ficticia y dibuja mapas SVG reales. Genera un lote y espera que elijas el siguiente y su modalidad. El próximo grupo necesita evitar las escaleras: dejar el primer comando en segundo plano no basta; debes volver a su pregunta de entrada.
Iniciarás una sesión tmux con nombre en Terminal A, desconectarás el cliente y continuarás el mismo proceso desde Terminal B para usar la colección en Maps. Basta con conocer el manejo básico de la terminal; no escribirás Python ni necesitas experiencia cartográfica. Todas las rutas son datos ficticios de aprendizaje, no indicaciones para un sendero real.
Iniciar una tarea cartográfica con nombre
En este paso, iniciarás una tarea cartográfica interactiva real y la dejarás esperando el siguiente lote.
El shell lee comandos; una tarea es un programa que inicia el shell. tmux conserva una terminal y su tarea en un servidor en segundo plano. Una sesión con nombre agrupa ventanas, cada una con su terminal. Un cliente conecta la terminal del navegador a esa sesión. Desconectarlo elimina el cliente, mientras el servidor y la tarea continúan. tmux no recupera el trabajo si se destruyen la VM o el servidor.
Ambas terminales comienzan en /home/labex/project/trail-maps, dentro de sesiones tmux independientes de la plataforma. plan.tsv es una ruta relativa: identifica el archivo del directorio actual. Evita crear otro tmux conectado dentro de ellas. Primero lee el plan en Terminal A. cat muestra un archivo; las columnas indican tarea, siguiente lote, modalidad y motivo.
cat plan.tsv
La tarea survey necesita el lote east en modalidad step-free. walking permite escaleras; step-free excluye todas las conexiones con escaleras antes de calcular el camino más corto. El primer lote usa walking, por lo que su ruta más corta puede ser distinta legítimamente. No necesitas conocimientos geográficos.
Enumera las sesiones. list-sessions es un comando de tmux; conserva la sesión preparada trail-reference. Los nombres que empiezan por TTYD- pertenecen a la plataforma.
tmux list-sessions
Crea trail-survey. new-session crea una sesión, -d la deja desconectada y -s le asigna un nombre único. El último argumento entre comillas es el comando que ejecutará su terminal. python3 ejecuta el programa proporcionado; guided selecciona la tarea independiente de este laboratorio. Esto inicia el programa directamente en la sesión.
tmux new-session -d -s trail-survey 'python3 /opt/labex/atlas/map-job.py guided'
Conéctate a ella. attach-session usa -t para seleccionar el destino. Desde el cliente tmux existente de la plataforma, cambia la sesión del cliente en lugar de anidar otro tmux.
tmux attach-session -t trail-survey
La ruta absoluta identifica el programa preparado. Este indica un PID, escribe dos SVG de morning y se detiene en Next batch:. Observa ese PID: Terminal B debe mostrar el mismo. El programa sigue vivo, esperando entrada; es normal que no aparezca el prompt del shell. No escribas comandos del shell como respuesta.
Si al crear la sesión aparece duplicate session, enumera las sesiones y conecta con la existente trail-survey; no borres sus archivos ni inicies otra tarea. Si ves sessions should be nested with care, intentaste un new-session conectado dentro de tmux: vuelve al shell de la plataforma y usa la creación desconectada anterior. Verifica este paso mientras el programa sigue esperando.
Continuar desde Terminal B
En este paso, desconectarás el primer cliente y completarás el siguiente lote mediante otra terminal independiente.
Da el foco a Terminal A. Mantén Ctrl y pulsa B, suelta ambas teclas y después pulsa D. Es un prefijo seguido de una tecla, no tres teclas simultáneas. Envía la orden de desconexión a tmux. No uses exit ni Ctrl+C: terminan un shell o interrumpen el programa, en vez de desconectar su pantalla.
El navegador muestra [detached (from session trail-survey)]. Como la plataforma inicia tmux directamente, esta terminal no tiene un shell exterior al que volver. Déjala así. Abre Terminal B, que dispone de su propio shell persistente. Cerrar una pestaña o perder la conexión de red son eventos distintos; este ejercicio prueba deliberadamente la desconexión y reconexión en la misma VM.
Enumera las sesiones en Terminal B:
tmux list-sessions
trail-survey debe seguir en la lista, ahora sin cliente conectado. Conecta con ese nombre exacto:
tmux attach-session -t trail-survey
Debes ver el mismo PID y la pregunta Next batch: de antes. Si sigues viendo el prompt del shell, no has conectado con el programa. Si aparece otra tarea, desconecta y selecciona el nombre correcto; no le envíes respuestas.
Introduce el siguiente lote solicitado en la pregunta del programa. Es una entrada para el programa cartográfico, no un comando del shell:
east
Después pregunta Route mode:. Proporciona la modalidad accesible del plan:
step-free
Antes de escribir archivos, muestra Plan: east / step-free y pregunta Build this batch? [yes/no]:. Comprueba conjuntamente lote y modalidad. Si cualquiera es incorrecto, introduce no para volver a Next batch: dentro del mismo proceso; los mapas originales no cambian. Cuando el plan sea correcto, confirma:
yes
El programa calcula otras dos rutas, escribe sus SVG y actualiza el índice. Debe aparecer Collection ready: 4 real SVG maps and index.json.. La pregunta final Inspection mode mantiene intencionadamente el proceso original disponible para inspección. Déjalo vivo. Los nombres de lote o modalidades no válidos se rechazan sin perder el primer lote: lee la pregunta y vuelve a contestarla. Una elección válida pero equivocada puede corregirse en la confirmación con no y una nueva selección. Recargar el navegador no modifica el plan pendiente. Tras confirmar yes, la colección es definitiva; compárala con el plan antes de aceptar. No borres archivos ni reinicies procesos para disfrazar una tarea nueva.
La comprobación compara el proceso vivo, las rutas exactas y el índice completo. Crear otro proceso con resultados parecidos no equivale a continuar esta tarea.
Usar la colección de mapas terminada
En este paso, inspeccionarás los mapas reales y el índice legible por programas, manteniendo las tareas disponibles.
Abre Maps y elige survey/. Las dos primeras tarjetas son los mapas originales de morning. Las dos siguientes corresponden a east en modalidad step-free. Selecciona Download SVG en la ruta east hacia Cabin y guarda el SVG. La línea verde debe pasar por Orchard, evitando las conexiones con escaleras de Bridge. La primera ruta morning hacia Cabin puede usar Bridge. Las diferencias proceden del cálculo del grafo según la modalidad, no de cambiar una etiqueta.
Vuelve a la colección y lee la ruta east hacia Lookout. Su recorrido y duración también figuran en index.json. Para inspeccionarlos, permanece en Terminal B y pulsa Ctrl+B y luego C. Se crea una ventana tmux con un shell mientras el programa continúa en la ventana 0. Una ventana es otra terminal dentro de la misma sesión con nombre; no reinicia el programa. El prompt del shell indica que puedes introducir comandos otra vez.
Usa cd para fijar explícitamente el directorio actual. La ruta absoluta empieza por /, así que funciona independientemente del directorio inicial del nuevo shell:
cd /home/labex/project/trail-maps
ls enumera los nombres de un directorio. Confirma que existen los cuatro mapas, el visor HTML, el índice y la información del proceso:
ls survey
Muestra el índice con su ruta relativa:
cat survey/index.json
Cada registro incluye lote, modalidad, destino, minutos y secuencia de nodos calculada. Los mapas originales permanecen junto a los nuevos. Es una colección utilizable, no solo un mensaje de finalización.
Enumera de nuevo las sesiones:
tmux list-sessions
Deben permanecer tanto trail-survey como trail-reference. Una sesión desconectada puede seguir funcionando. Las sesiones TTYD- de la plataforma no forman parte de estas tareas. No uses kill-server para limpiar: terminaría todas las sesiones, incluida la referencia. Conserva el entorno hasta superar las comprobaciones. Para volver al programa original, pulsa Ctrl+B y luego el dígito 0. Selecciona la ventana 0; deben seguir presentes la pregunta de inspección y el mismo PID.
Has continuado funcionalmente un proceso entre dos terminales del navegador. Esto no demuestra recuperación tras reiniciar la VM, cambios de máquina física, reintentos automáticos ni reconexión de red de la plataforma.
Resumen
Has creado una sesión tmux con nombre, desconectado un cliente y conectado desde otra terminal para responder al mismo programa cartográfico vivo. La colección conserva los mapas originales para caminar y añade los mapas accesibles solicitados con su índice exacto. También has preservado la sesión de referencia. La continuidad depende de que el servidor tmux y la VM sigan vivos.



