Как отделить жизненный цикл 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 использованы только как обезличенные сигналы.
Источники и проверка
- Microsoft Learn — Run Windows tools from Linux проверено 2026-08-07
- tmux Wiki — Getting Started проверено 2026-08-07
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.