К обсуждениям

Windows-программа из WSL зависает после закрытия tmux: карта процесса и сеанса

Редакция VOne Технологии

Как отделить жизненный цикл Windows-процесса, запущенного из WSL, от tmux server, клиента терминала и сетевого состояния с помощью матрицы 2×2 без сброса дистрибутива.

Нарисуйте четыре независимых объекта

В сценарии участвуют Windows-программа, WSL-дистрибутив, tmux server и внешний терминал с tmux client. Закрытие окна терминала не обязательно означает штатное detach, а существующий tmux server не гарантирует, что Windows interop-процесс продолжит отвечать. До теста запишите, что именно называется «зависло»: окно не перерисовывается, процесс остаётся, ввод не принимается или новое подключение к сеансу не помогает. Не используйте рабочую программу с несохранёнными данными. Выберите нейтральное приложение, которое можно закрыть без последствий, и не запускайте команды из чужой ветки.

Матрица вне tmux и внутри него

Первый контроль — запустить нейтральную Windows-программу напрямую из WSL и закрыть только вызывающий терминал обычным способом. Второй — выполнить тот же запуск внутри нового пустого tmux-сеанса. Меняется одна ось: наличие tmux. Наблюдайте, остаётся ли процесс и отвечает ли интерфейс. Microsoft документирует запуск Windows tools из Linux как interop-возможность, но не обещает конкретный жизненный цикл в tmux. Поэтому отличие двух строк полезно, однако не доказывает, что дефект находится именно в tmux, Windows или WSL.

Detach не равен закрытию последнего терминала

tmux различает server, client, session, window и pane и объясняет, что detach оставляет сеанс и программы работать. Сравните штатное отсоединение клиента с закрытием внешнего терминала без detach. После каждого варианта подключитесь заново и проверьте tmux-сеанс и Windows-программу. Не завершайте tmux server между строками, иначе изменится ещё одна переменная. Если проблема возникает только после закрытия окна, а штатный detach её не вызывает, это точная граница события. Если оба варианта одинаковы, фиксируйте это без попытки назначить сетевую причину.

Как эскалировать без конфигурации и логов проекта

В отчёт входят версия Windows и WSL, WSL 1 или 2, версия tmux, выбранное нейтральное приложение и четыре результата матрицы. Укажите момент: запуск, detach, закрытие терминала, повторное подключение. Уберите имя дистрибутива, если оно раскрывает внутренний образ, пользовательские пути, команды проекта и содержимое сеанса. Не применяйте утилиты, которые перехватывают жизненный цикл процессов, пока базовый сценарий не зафиксирован. Критерий остановки — необходимость завершить все WSL-процессы, сбросить дистрибутив или воспроизводить ошибку только на рабочем приложении с данными.

Материал подготовлен редакцией VOne с помощью ИИ для матрицы жизненного цикла; границы WSL interop и tmux вручную сверены по первичной документации, issues использованы только как обезличенные сигналы.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.