Skip to content

Поддержание работы дистрибутива WSL (Keep-Alive) ​

Многие пользователи, только начавшие знакомство с WSL2, сталкиваются с «недоумением»: Linux установлен, но почему после закрытия терминала он через некоторое время «автоматически выключается»? Почему он не может работать постоянно?

В этой статье сначала описывается это явление, затем объясняется, почему Microsoft так спроектировала WSL, и, наконец, рассказывается, как с помощью WSL Dashboard запустить дистрибутив Linux в режиме keep-alive (поддержания работы).

1. Текущее положение: после закрытия терминала Linux вскоре автоматически выключается ​

Вы когда-нибудь сталкивались с такой ситуацией?

  1. Вы открываете терминал какого-либо дистрибутива Linux, и Linux запускается автоматически, без выполнения каких-либо команд;
  2. После закрытия окна терминала Linux не продолжает работать — примерно через 60 секунд он автоматически выключается;
  3. Вы снова открываете терминал, и Linux снова запускается автоматически, и так по кругу.

NOTE

«Тайм-аут простоя» (idle timeout) WSL2 по умолчанию составляет около 60 секунд: когда в дистрибутиве нет запущенных процессов (например, вы закрыли все терминалы), виртуальная машина WSL автоматически завершает работу, освобождая системные ресурсы, такие как память.

Такое поведение — это стандартная конструкция WSL2: это не сбой и не ошибка.

2. Почему Microsoft так спроектировала WSL? ​

2.1 По сути, WSL2 — это облегчённая виртуальная машина ​

WSL2 запускает полноценное ядро Linux через облегчённую виртуальную машину Hyper-V (utility VM). Каждый работающий дистрибутив реально занимает ресурсы памяти. Если бы все дистрибутивы постоянно оставались в фоне, машина, одновременно запускающая несколько дистрибутивов, впустую тратила бы сотни МБ и даже несколько ГБ памяти, замедляя производительность всей системы.

2.2 Концепция выделения ресурсов по требованию ​

Философия дизайна Windows — «выделять ресурсы по требованию, освобождать, когда не используются»:

  • Для большинства пользователей: открыть терминал = нужен Linux; закрыть терминал = временно не нужен;
  • Лишь немногим пользователям требуется, чтобы Linux работал 7×24 часа без перерыва.

Поэтому WSL придерживается стратегии «запуск по требованию, остановка при простое», автоматически возвращая системе такие ресурсы, как память, когда они не нужны.

2.3 Аналогия: выключать свет, выходя из комнаты ​

«Автоматическое выключение при простое» WSL похоже на выключение света при выходе из комнаты: экономно и эффективно. Но для тех, кому «нужно, чтобы свет горел постоянно», это доставляет неудобства — именно отсюда и возникает потребность в keep-alive.

TIP

Если вам нужно, чтобы Linux работал постоянно (например, для развёртывания сервисов, запуска запланированных задач, настройки сервера разработки и т. д.), прочитайте следующую главу и используйте WSL Dashboard, чтобы поддерживать работу дистрибутива.

3. Запуск Linux в режиме keep-alive с помощью WSL Dashboard ​

WSL Dashboard предлагает два простых способа поддерживать работу вашего дистрибутива Linux.

Способ 1: Нажмите кнопку «Запустить» ​

В списке «Установленные дистрибутивы Linux» WSL Dashboard:

  1. Найдите дистрибутив, который хотите поддерживать в рабочем состоянии;
  2. Нажмите кнопку «Запустить» в строке этого дистрибутива.

После нажатия дистрибутив немедленно активируется и продолжает работать; пока вы не остановите его вручную, он не будет автоматически выключен из-за простоя. Этот способ подходит для временного режима keep-alive, когда вам нужно, чтобы Linux работал непрерывно прямо сейчас.

Способ 2: Установите флажок «Автоматически запускать этот дистрибутив при запуске Windows.» ​

В списке «Установленные дистрибутивы Linux» WSL Dashboard:

  1. Нажмите кнопку «Параметры» в строке нужного дистрибутива, чтобы открыть окно настроек;
  2. В окне установите флажок «Автоматически запускать этот дистрибутив при запуске Windows.»;
  3. Сохраните настройки.

После установки флажка дистрибутив будет автоматически запускаться при каждом запуске/входе в Windows, без каких-либо ручных действий — «keep-alive с момента загрузки». Этот способ подходит для сценариев, где Linux должен оставаться в сети в течение длительного времени (например, серверы разработки, постоянно работающие службы).

TIP

  • Нужно только временно → используйте Способ 1 (нажмите «Запустить»);
  • Нужно постоянное нахождение в сети → используйте Способ 2 (установите флажок «Автоматически запускать этот дистрибутив при запуске Windows.»).