Zwykle używam podsystemu linux, gdy programuję coś na Windows 10, więc wszystkie moje ścieżki są względne ~
. Mam skrypt Pythona, który działa wiecznie w tle, dopóki nie zabiję procesu. Jak mam to zrobić na Windows 10 bez otwartego terminalu?
Rzeczy, których próbowałem:
bash -c "python3 script.py
z Run.nohup python3 -u script.py
następnie zamykając terminal.setsid python3 script.py
następnie zamykając terminal.
Żaden z nich nie działał. Czy jest na to sposób? Alternatywnie, czy istnieje sposób na zmianę ścieżek, aby działały, jeśli uruchomię skrypt z W10 ORAZ bash bez konieczności przełączania ich za każdym razem?
jobs
), jak i proces (ps aux
). Mogę użyć,fg
aby przenieść go na pierwszy plan. Ale po zamknięciu ostatniego okna bash i otwarciu nowego okna bash zadanie zniknęło, proces nadal działa i nie mogę przenieść go na pierwszy plan. Przepraszam, jeśli moja terminologia jest wyłączona.tmux
lub wscreen
celu wsparcia ponowne podłączenie do innego terminala. Maszyny z systemem Linux (i inne * nix) działające natywnie mają te same ograniczenia.Tak, w tej chwili jest to „niemożliwe”.
Ale możliwe jest, że „pojawi się” jak proces w tle z pewnymi sztuczkami. Sam bardzo chciałem tej funkcji, więc po kilku godzinach wpadłem na gówniane, ale działające rozwiązanie.
Chodzi przede wszystkim o stworzenie niewidzialnej powłoki, do której uruchamiasz WSL Bash za pomocą VBScript. Możesz wtedy uruchomić ten skrypt podczas uruchamiania. Właściwe planowanie zadań nie działało z jakiegoś dziwnego powodu.
Po stronie Linux, aby umożliwić demony, możesz mieć swój podstawowy system uruchamiania, który na przykład nadużywa .bashrc.
Proces jest szczegółowo opisany tutaj w tym dokumencie, który napisałem https://emil.fi/bashwin . Nie wdrożyłem monitorowania zadań, ale jego rozszerzenie powinno być dość łatwe.
źródło
Wypróbowałeś to rozwiązanie?
Wykorzystuje pomocnika WSH do uruchamiania dowolnej ukrytej aplikacji.
Następnie możesz po prostu utworzyć nowe zadanie w Tak Scheduler, aby uruchomić polecenie po zalogowaniu. Coś jak
wscript <path to runHidden.vbs> bash.exe -c "python script.py"
źródło
Zajęło mi to wieczność, ale znalazłem głupio skomplikowany sposób (z pliku wsadowego):
start bash -c "DISPLAY=:0 [command] & (sleep 0.5 && kill -n 9 $$)"
Oto podział tego, co robi i dlaczego:
źródło
Nie wiem, jak dobrze Windows Service Manager (SrvMan) z http://tools.sysprogs.org/srvman/ działałby dla ciebie, ale dla mnie działał dla innych programów. W rzeczywistości próbowałem uruchomić „bash.exe” jako usługę, aby sprawdzić, czy to zadziała, i sądzę, że muszę jeszcze trochę majstrować, aby LAMP rzeczywiście działał w tle.
źródło