Продолжите построение маршрутов из другого терминала

LinuxBeginner
Практиковаться сейчас

Введение

Общественный справочный пункт готовит карточки маршрутов для посетителей троп. Предоставленная программа рассчитывает пути в небольшой вымышленной сети и создаёт настоящие карты SVG. Она строит первую партию, затем ждёт выбора следующей партии и режима маршрута. Следующей группе нужны пути без лестниц, поэтому просто оставить первую команду в фоне недостаточно: необходимо вернуться к запросу ввода программы.

Вы запустите именованный сеанс tmux в Terminal A, отсоедините клиент, продолжите тот же процесс через Terminal B и воспользуетесь коллекцией в Maps. Достаточно базового знакомства с терминалом; писать Python и иметь опыт картографии не требуется. Все маршруты — учебные вымышленные данные, а не указания для настоящих троп.

Запустите именованную задачу построения карт

На этом шаге вы запустите настоящую интерактивную задачу построения карт и оставите её ждать следующую партию.

Оболочка читает команды. Задача — это программа, которую запускает оболочка. tmux сохраняет терминал и его задачу в фоновом сервере. Именованный сеанс объединяет окна, каждое со своим терминалом. Клиент соединяет терминал браузера с сеансом. Отсоединение убирает клиент, а сервер и задача продолжают работать. tmux не восстанавливает работу после уничтожения VM или сервера.

Оба браузерных терминала начинают в /home/labex/project/trail-maps, уже внутри отдельных сеансов tmux платформы. plan.tsv — относительный путь: он обозначает файл в текущем каталоге. Не создавайте внутри ещё один присоединённый tmux. Сначала прочитайте план в Terminal A. cat показывает файл; столбцы задают задачу, следующую партию, режим и причину выбора.

cat plan.tsv

Задаче survey нужна партия east в режиме step-free. walking допускает лестницы; step-free исключает все рёбра с лестницами до расчёта кратчайшего пути. Первая партия использует walking, поэтому её более короткий маршрут может обоснованно отличаться. Знания географии не нужны.

Выведите список сеансов. list-sessions — команда tmux; сохраните подготовленный сеанс trail-reference. Имена с префиксом TTYD- принадлежат платформе.

tmux list-sessions

Создайте trail-survey. new-session создаёт сеанс, -d оставляет его отсоединённым, а -s задаёт уникальное имя. Последний аргумент в кавычках — команда для его терминала. python3 запускает предоставленную программу; guided выбирает независимую задачу этой лабораторной. Программа запускается непосредственно в сеансе.

tmux new-session -d -s trail-survey 'python3 /opt/labex/atlas/map-job.py guided'

Подключитесь к нему. attach-session выбирает цель через -t. В существующем клиенте tmux платформы это переключает сеанс клиента, а не вкладывает ещё один tmux.

tmux attach-session -t trail-survey

Абсолютный путь обозначает подготовленную программу. Она сообщает PID, записывает два SVG для morning и останавливается на Next batch:. Запомните PID: Terminal B должен показать тот же. Программа остаётся живой и ждёт ввода; отсутствие приглашения оболочки нормально. Не вводите команду оболочки в ответ на этот вопрос.

Если при создании появляется duplicate session, выведите список сеансов и подключитесь к существующему trail-survey; не удаляйте файлы и не запускайте замену. Сообщение sessions should be nested with care означает, что вы попытались выполнить присоединённый new-session внутри tmux: вернитесь в оболочку платформы и используйте показанное создание отсоединённого сеанса. Проверьте шаг, пока программа ещё ждёт.

Продолжите через Terminal B

На этом шаге вы отсоедините первый клиент и завершите следующую партию из второго независимого терминала.

Переведите фокус в Terminal A. Удерживая Ctrl, нажмите B, отпустите обе клавиши и затем нажмите D. Это префикс с последующей клавишей, а не одновременное удержание трёх клавиш. Последовательность посылает tmux команду отсоединения. Не используйте exit или Ctrl+C: они завершают оболочку либо прерывают программу, а не отключают её отображение.

Браузер показывает [detached (from session trail-survey)]. Платформа запускает tmux напрямую, поэтому у этого терминала нет внешней оболочки, куда можно вернуться. Оставьте его так. Откройте Terminal B, у которого своя постоянная оболочка. Закрытие вкладки или потеря сети — другие события; упражнение намеренно проверяет отсоединение и повторное подключение на той же VM.

Выведите сеансы в Terminal B:

tmux list-sessions

trail-survey должен остаться в списке, теперь без присоединённого клиента. Подключитесь к этому точному имени:

tmux attach-session -t trail-survey

Вы должны увидеть прежний PID и вопрос Next batch:. Если всё ещё видите приглашение оболочки, к программе вы не подключились. Если отображается другая задача, отсоединитесь и выберите правильное имя; не отправляйте ей ответы.

Введите следующую партию, указанную в плане, в запросе программы. Это ввод для построителя карт, а не команда оболочки:

east

Далее появится Route mode:. Укажите режим без лестниц из плана:

step-free

Перед записью файлов программа показывает Plan: east / step-free и спрашивает Build this batch? [yes/no]:. Сверьте вместе партию и режим. Если что-то неверно, введите no, чтобы вернуться к Next batch: в том же процессе; исходные карты останутся неизменными. Выбрав правильный план, подтвердите:

yes

Программа рассчитывает ещё два маршрута, записывает SVG и обновляет индекс коллекции. Ожидается Collection ready: 4 real SVG maps and index.json.. Последний запрос Inspection mode специально оставляет исходный процесс живым для проверки. Не завершайте его. Неверные имена партий или режимы отклоняются без потери первой партии: прочитайте запрос и повторно ответьте на тот же вопрос. Допустимый, но ошибочный выбор можно исправить на подтверждении: введите no и выберите снова. Обновление браузера не меняет ожидающий план. После yes коллекция окончательна, поэтому сверяйтесь с планом до подтверждения. Не удаляйте файлы и не перезапускайте процесс, выдавая новую задачу за продолжение.

Проверка сопоставляет живой процесс, точные маршруты и полный индекс. Новый процесс с похожими результатами не означает продолжения этой задачи.

Используйте готовую коллекцию карт

На этом шаге вы изучите настоящие карты и машиночитаемый индекс, сохранив доступность задач.

Откройте Maps и выберите survey/. Первые две карточки содержат исходные карты morning. Следующие две — карты east в режиме step-free. На маршруте east к Cabin нажмите Download SVG и сохраните SVG. Зелёный путь должен идти через Orchard, обходя рёбра с лестницами у Bridge. Первый маршрут morning к Cabin может проходить через Bridge. Различия получены вычислением на графе с выбранным режимом, а не сменой подписи.

Вернитесь к коллекции и прочитайте маршрут east к Lookout. Путь и длительность также записаны в index.json. Чтобы изучить данные, останьтесь в Terminal B, нажмите Ctrl+B, затем C. Появится новое окно tmux с оболочкой, а программа продолжит работу в окне 0. Окно — ещё один терминал внутри того же именованного сеанса; оно не перезапускает программу. Приглашение оболочки означает, что снова можно вводить команды.

Явно задайте текущий каталог оболочки командой cd. Абсолютный путь начинается с /, поэтому команда сработает независимо от начального каталога новой оболочки:

cd /home/labex/project/trail-maps

ls перечисляет имена в каталоге. Убедитесь, что присутствуют четыре карты, HTML-просмотрщик, индекс и информация о процессе:

ls survey

Покажите индекс по относительному пути:

cat survey/index.json

Каждая запись содержит партию, режим, пункт назначения, минуты и рассчитанную последовательность узлов. Исходные карты остаются рядом с новыми. Это пригодная к использованию коллекция, а не одно сообщение о завершении.

Снова выведите список сеансов:

tmux list-sessions

Нужно сохранить и trail-survey, и trail-reference. Отсоединённый сеанс может продолжать работу. Сеансы платформы TTYD- не относятся к этим рабочим задачам. Не применяйте kill-server для уборки: он завершит все сеансы, включая справочный. Сохраняйте окружение до успешной проверки. Чтобы вернуться к исходной программе, нажмите Ctrl+B и затем цифру 0. Будет выбрано окно 0; запрос осмотра и тот же PID должны оставаться на месте.

Вы функционально продолжили один процесс между двумя браузерными терминалами. Это не доказывает восстановление после перезагрузки VM, смену физических машин, автоматические повторы задач или сетевое переподключение платформы.

Резюме

Вы создали именованный сеанс tmux, отсоединили клиент и подключились из другого терминала, чтобы продолжить отвечать той же живой программе. Коллекция содержит исходные пешеходные карты, требуемые карты без лестниц и их точный индекс. Справочный сеанс также сохранён. Непрерывность зависит от того, остаются ли живы сервер tmux и VM.