Обновить
Microsoft обратилась к этому. Фоновые / демонические процессы теперь могут продолжать работать даже после bash.exe
закрытия (или другого процесса запуска WSL). Требуется последняя сборка Win10 (весна 2018 г. для публичных выпусков, сборка 17046 или выше).
Ниже сохраняется для потомков.
К сожалению / нелепо, нет способа сделать это. Microsoft в своей бесконечной мудрости решила, что WSL (Windows Subsystem for Linux) будет работать только тогда, когда у вас открыт bash.exe
процесс. Закройте последнее (или, возможно, даже закройте последнее окно ; я не уверен, что оно допустит запуск без заголовка), и WSL завершает работу, убивая все его процессы.
Основанием для этого было «сохранить ресурсы», что абсурдно на нескольких разных уровнях, но прежде всего потому, что, черт возьми, у моего компьютера есть эти ресурсы, и они там для использования! Если я хочу, чтобы процесс выполнялся, он должен запускаться; если я не хочу, чтобы он работал, я могу убить его. Для чего-то, явно предназначенного для инструмента разработчика, иногда кажется, что WSL можно использовать только как игрушку, и его пользователям нельзя доверять, чтобы знать, что они делают.
В любом случае, если вы хотите, чтобы это было исправлено, проголосуйте за возможность включения заданий cron, демонов и фоновых задач на странице UserVoice . В настоящее время это второй запрос, получивший наибольшее количество голосов, и он "находится в отставании".
jobs
), и process (ps aux
). Я могу использовать,fg
чтобы вывести его на передний план. Но после того, как я закрыл последнее окно bash и открыл новое окно bash, задание пропало, процесс все еще выполняется, и я не могу переместить процесс на передний план. Извините, если моя терминология выключена.tmux
илиscreen
для поддержки повторное подключение к другому терминалу. Linux (и другие * nix) машины, работающие в натуре, имеют то же ограничение.Да, это "невозможно" в данный момент.
Но можно сделать так, чтобы он «выглядел» как фоновый процесс с некоторыми хитростями. Я сам очень хотел эту функциональность, поэтому через пару часов я нашел дерьмовое, но работающее решение.
Суть в том, чтобы создать невидимую оболочку, для которой вы запускаете WSL Bash с VBScript. Затем вы можете запустить этот скрипт при запуске. Правильное планирование задач не сработало по какой-то странной причине.
На стороне Linux для включения демонов у вас может быть собственная элементарная система запуска, которая, например, использует .bashrc.
Процесс подробно описан здесь, в этом документе я написал https://emil.fi/bashwin . Я не реализовывал мониторинг задач, но его было довольно просто расширить.
источник
Вы пробовали это решение?
Он использует помощник WSH для запуска любого скрытого приложения.
Затем вы можете просто создать новую задачу в Tak Scheduler, чтобы запустить команду при входе в систему. Что-то вроде
wscript <path to runHidden.vbs> bash.exe -c "python script.py"
источник
Это заняло у меня навсегда, но я нашел глупо сложный способ сделать это (из командного файла):
start bash -c "DISPLAY=:0 [command] & (sleep 0.5 && kill -n 9 $$)"
Вот разбивка того, что он делает и почему:
источник
Я не знаю, насколько хорошо Windows Service Manager (SrvMan) из http://tools.sysprogs.org/srvman/ будет работать для вас, но он работал для меня для других программ. На самом деле, я попытался запустить bash.exe в качестве службы, чтобы посмотреть, будет ли он работать, и я предполагаю, что мне придется немного повозиться, чтобы LAMP действительно работал в фоновом режиме.
источник