Introdução
Um posto comunitário de trilhas está preparando cartões de rotas para visitantes. O programa fornecido calcula caminhos em uma pequena rede fictícia e desenha mapas SVG reais. Ele produz um lote e espera sua escolha do próximo lote e modo de rota. O próximo grupo precisa evitar escadas, portanto deixar o primeiro comando em segundo plano não basta: você precisa retornar à pergunta de entrada do programa.
Você iniciará uma sessão tmux com nome em Terminal A, desconectará o cliente e continuará o mesmo processo em Terminal B, usando a coleção em Maps. Basta familiaridade básica com o terminal; você não escreverá Python nem precisa de experiência cartográfica. Todas as rotas são dados fictícios de treinamento, não instruções para navegar em uma trilha real.
Inicie uma tarefa de mapas com nome
Nesta etapa, você iniciará uma tarefa cartográfica interativa real e a deixará aguardando o próximo lote.
O shell lê comandos. Uma tarefa é um programa iniciado pelo shell. O tmux mantém um terminal e sua tarefa em um servidor em segundo plano. Uma sessão com nome reúne janelas, cada qual com um terminal. Um cliente conecta o terminal do navegador à sessão. Desanexar remove o cliente, enquanto servidor e tarefa continuam. O tmux não recupera o trabalho depois que a VM ou o servidor é destruído.
Ambos os terminais começam em /home/labex/project/trail-maps, já em sessões tmux separadas da plataforma. plan.tsv é um caminho relativo: identifica o arquivo no diretório atual. Evite criar outro tmux anexado dentro deles. Primeiro leia o plano em Terminal A. cat mostra um arquivo; as colunas indicam tarefa, próximo lote, modo de rota e motivo.
cat plan.tsv
A tarefa survey precisa do lote east no modo step-free. walking permite escadas; step-free exclui todas as arestas com escadas antes de calcular o caminho mais curto. O primeiro lote usa walking, então sua rota mais curta pode legitimamente ser diferente. Não é necessário conhecimento geográfico.
Liste as sessões. list-sessions é um comando tmux; preserve a sessão preparada trail-reference. Os nomes iniciados por TTYD- pertencem à plataforma.
tmux list-sessions
Crie trail-survey. new-session cria uma sessão, -d a deixa desanexada e -s define seu nome exclusivo. O último argumento entre aspas é o comando executado em seu terminal. python3 executa o programa fornecido; guided seleciona a tarefa independente deste laboratório. Isso inicia o gerador diretamente na sessão.
tmux new-session -d -s trail-survey 'python3 /opt/labex/atlas/map-job.py guided'
Conecte-se a ela. attach-session seleciona o destino com -t. Dentro do cliente tmux existente da plataforma, isso muda a sessão do cliente em vez de aninhar outro tmux.
tmux attach-session -t trail-survey
O caminho absoluto identifica o programa preparado. Ele informa um PID, grava dois SVG de morning e para em Next batch:. Observe o PID: Terminal B deve mostrar o mesmo. O programa permanece vivo, aguardando entrada; a ausência do prompt do shell é esperada. Não responda a essa pergunta com um comando do shell.
Se a criação mostrar duplicate session, liste as sessões e conecte-se à existente trail-survey; não apague seus arquivos nem inicie uma substituta. Se aparecer sessions should be nested with care, você tentou um new-session anexado dentro do tmux: volte ao shell da plataforma e use a criação desanexada acima. Verifique esta etapa enquanto o gerador ainda aguarda.
Continue pelo Terminal B
Nesta etapa, você desanexará o primeiro cliente e concluirá o próximo lote por um segundo terminal independente.
Dê foco a Terminal A. Segure Ctrl e pressione B, solte ambas as teclas e depois pressione D. É um prefixo seguido de uma tecla, não três teclas pressionadas juntas. Isso envia o comando de desanexação ao tmux. Não use exit ou Ctrl+C: eles encerram um shell ou interrompem o gerador em vez de desconectar sua exibição.
O navegador mostra [detached (from session trail-survey)]. Como a plataforma inicia tmux diretamente, esse terminal não tem um shell externo ao qual retornar. Deixe-o assim. Abra Terminal B, que possui seu próprio shell persistente. Fechar uma aba ou perder a rede é um evento diferente; este exercício testa deliberadamente desanexar e reconectar na mesma VM.
Liste as sessões em Terminal B:
tmux list-sessions
trail-survey deve continuar na lista, agora sem cliente anexado. Reconecte-se a esse nome exato:
tmux attach-session -t trail-survey
Você deve ver o mesmo PID e a pergunta Next batch: de antes. Se ainda vê o prompt do shell, não se conectou ao gerador. Se outra tarefa aparecer, desanexe e escolha o nome correto; não envie respostas para ela.
Digite o próximo lote solicitado no prompt do programa. É uma entrada para o gerador de mapas, não um comando do shell:
east
Em seguida ele pergunta Route mode:. Informe o modo acessível do plano:
step-free
Antes de gravar arquivos, ele mostra Plan: east / step-free e pergunta Build this batch? [yes/no]:. Confira lote e modo juntos. Se algum estiver errado, digite no para retornar a Next batch: no mesmo processo; os mapas originais permanecem intactos. Depois de escolher o plano correto, confirme:
yes
O programa calcula mais duas rotas, grava seus SVG e atualiza o índice. Espere Collection ready: 4 real SVG maps and index.json.. O prompt final Inspection mode mantém o processo original vivo de propósito para inspeção. Deixe-o funcionando. Nomes de lote ou modos inválidos são rejeitados sem perder o primeiro lote: leia o prompt e responda novamente à mesma pergunta. Uma escolha válida, mas incorreta, pode ser corrigida na confirmação com no e uma nova seleção. Atualizar o navegador não muda o plano pendente. Depois de confirmar yes, a coleção é definitiva; compare com o plano antes de confirmar. Não apague arquivos nem reinicie processos para disfarçar uma tarefa nova como continuação.
A verificação compara o processo vivo, as rotas exatas e o índice completo. Criar um novo processo com resultados parecidos não representa continuar esta tarefa.
Use a coleção de mapas concluída
Nesta etapa, você examinará os mapas reais e seu índice legível por programas enquanto mantém as tarefas disponíveis.
Abra Maps e escolha survey/. Os dois primeiros cartões são os mapas originais de morning. Os dois seguintes pertencem a east no modo step-free. Selecione Download SVG na rota east para Cabin e salve o SVG. O caminho verde deve passar por Orchard, evitando as arestas com escadas de Bridge. A primeira rota morning para Cabin pode usar Bridge. As diferenças resultam do cálculo no grafo segundo o modo escolhido, não de uma simples troca de rótulo.
Volte à coleção e leia a rota east para Lookout. O percurso e a duração também estão em index.json. Para examinar esses dados, permaneça em Terminal B e pressione Ctrl+B, depois C. Isso cria uma nova janela tmux com um shell, enquanto o gerador continua na janela 0. Uma janela é outro terminal da mesma sessão com nome; não reinicia o programa. O prompt do shell indica que você pode inserir comandos novamente.
Use cd para definir explicitamente o diretório atual. O caminho absoluto começa com /, por isso funciona independentemente do diretório inicial do novo shell:
cd /home/labex/project/trail-maps
ls lista os nomes de um diretório. Confirme a presença dos quatro mapas, do leitor HTML, do índice e das informações do processo:
ls survey
Mostre o índice usando seu caminho relativo:
cat survey/index.json
Cada registro inclui lote, modo, destino, minutos e sequência de nós calculada. Os mapas originais permanecem ao lado dos novos. É uma coleção utilizável, não apenas uma mensagem de conclusão.
Liste as sessões novamente:
tmux list-sessions
Tanto trail-survey quanto trail-reference devem permanecer. Uma sessão desanexada pode continuar funcionando. As sessões TTYD- da plataforma não fazem parte dessas tarefas. Não execute kill-server para limpar: ele encerraria todas as sessões, inclusive a referência. Preserve o ambiente até passar nas verificações. Para voltar ao gerador original, pressione Ctrl+B e depois o dígito 0. Isso seleciona a janela 0; o prompt de inspeção e o mesmo PID devem continuar presentes.
Você continuou funcionalmente um processo entre dois terminais do navegador. Isso não demonstra recuperação após reiniciar a VM, troca de máquinas físicas, novas tentativas automáticas ou reconexão de rede da plataforma.
Resumo
Você criou uma sessão tmux com nome, desanexou um cliente e se reconectou por outro terminal para responder ao mesmo gerador de mapas vivo. A coleção contém os mapas de caminhada originais, os mapas acessíveis solicitados e seu índice exato. Você também preservou a sessão de referência. A continuidade depende de manter o servidor tmux e a VM vivos.



