Po przeszukiwaniu tej witryny i różnych Q jest jasne, że usługi i systemd
nie są dostępne dla WSL. Muszę uruchomić program w WSL przy każdym uruchomieniu komputera, więc przeczytałem tę stronę na temat używania crontab: Jak uruchomić usługę Ubuntu w systemie Windows (przy starcie)? Super użytkownik, ale pomyliłem się, ponieważ format nie zgadza się z formatem w crontab.
Ponadto to konkretne pytanie było specyficzne dla serwerów SSH, które wymagają uwzględnienia aspektu bezpieczeństwa, a co za tym idzie, nadmiernej komplikacji kroków. Niezależnie od tego, kroki badane w tym okresie zostały wypróbowane i nie zadziałały. Ponadto pytanie to jest bardzo specyficzne dla serwerów SSH, podczas gdy to pytanie dotyczy ogólnego wymogu ochrony środowiska. Muszę wiedzieć JAK uruchomić usługi w WSL (które mogą obejmować między innymi serwery SSH)
W efekcie - wymagane jest bardziej uproszczone rozwiązanie niż Jak uruchomić usługę Ubuntu w systemie Windows (przy starcie)? zapewnia.
Jednak to jest mój cron:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PATH=cd /usr/local/src/:cd xmr-stak-cpu:cd bin/
@reboot . sudo ./xmr-stak-cpu
Zrobiłem to również:
Uruchom pętlę bash / cron na starcie
Utwórz plik o nazwie linux.bat w powłoce: startup
Paste: C:\Windows\System32\bash.exe -c 'while [ true ]; do sudo /usr/sbin/cron -f; done'
To nie działa.
Jak mogę uruchomić usługę w WSL? Czy istnieje sposób na korzystanie z systemu Windows?
Ponieważ w systemie Windows próbowałem: za pomocą https://github.com/Microsoft/WSL/issues/612
Run: When the computer starts,
Action: Start a program,
Program: c:\Windows\system32\bash.exe,
Arguments: -c "sudo /xmr-stak-cpu/bin/xmr-stak-cpu -D"
Start in: /usr/local/src/
Jak się domyślacie, nadal nie działa. Szczerze mówiąc, chciałbym to zrobić w WSL, ponieważ jest to moja preferowana droga, ale w dowolny sposób.
Mam stację roboczą z 96 GB pamięci RAM i jako taki wolę używać tego jako podwójnego komputera z systemem Linux / Windows, a nie mojego słabego laptopa.
Mam zadania zarówno w systemie Linux, jak i Windows, i naprawdę potrzebuję / wolę rozwiązanie Linuxowe dostarczane przez Windows.
Przejrzałem inne pytanie i jest pakiet o nazwie Mysys, który wydaje się zapewniać rozwiązanie, ale to odbiega od integracji dostarczonej przez Microsoft, która była świetnym rozwiązaniem.
sudo ... xmr-stak-cpu
korzystasz z zaplanowanego zadania. - Czy uruchomiłeśvisudo
i uwzględniłeś,%sudo ALL=NOPASSWD: /xmr-stak-cpu/bin/xmr-stak-cpu
aby uniknąć problemów z poleceniem proszącym o hasło? Czy naprawdę potrzebujesz sudo? możesz uruchomić górnika bez przywilejów sudo?Odpowiedzi:
W WSL dystrybucje Linuksa działają tylko po wywołaniu pierwszego polecenia linux. Jeśli chcesz uruchomić linux deamon (usługę), musisz skonfigurować serwer w Linuksie i uruchomić dowolne polecenie w tej dystrybucji Linuksa.
Istnieje wiele stron i odpowiedzi, które pokazują, jak utworzyć skrypt do uruchomienia linuksowego WSL podczas uruchamiania komputera .
commands.txt
niestandardowe polecenia linux.gpedit.msc
polecenia) lub zaplanowane zadanie uruchamiane podczas uruchamiania (za pomocątaskschd.msc
).UWAGA: Jeśli twój program musi być
sudo
uruchomiony, musisz go skonfigurować, aby uruchomić program bez pytania o hasło.visudo
w systemie Linux i dodaj wiersz na końcu pliku:%sudo ALL=NOPASSWD: /full/path/to/program
źródło
start.vbs
plik przy logowaniu z maksymalnymi uprawnieniami użytkownika. Mogę teraz uruchomić to, aby cicho uruchomić usługę cron w WSL za każdym razem, gdy uruchamiam moją maszynę - działa jak sen;)Dziękuję za pytanie, które doprowadziło mnie do tego rozwiązania. To jest moje kompletne, uogólnione i szczególne rozwiązanie. Składa się z 3 kroków:
W rzeczywistości twój problem został już rozwiązany tylko za pomocą kroku 2 i 3, ale ponieważ próbowałeś zrobić to za pomocą cronjob, dodałem również ten krok dla kompletności.
1. Tworzenie działającego zadania cron:
/etc/
/etc/
wprowadź:sudo nano crontab
*/1 * * * * root touch /var/www/myFile
myFile
w lokalizacji/var/www/
co minutę.*/1 * * * * root touch /var/www/myFile
oznaczałoby: tworzenie tego pliku co 1 minutę godziny.Przykład
crontab
pliku może wyglądać (dodałem tylko ostatnią linię, reszta była już w mojej konfiguracji):2. Włączanie usługi cronjob
Aby automatycznie uruchomić polecenie podczas uruchamiania WSL Ubuntu 16.04, możesz:
/home/<your ubuntu user name>
sudo nano .bashrc
.bashrc
.bashrc
pliku.echo "hello world"
jak pokazano na rysunku poniżej.sudo ./xmr-stak-cpu
ctrl+x
Y
! [Przykładowa komenda w .bashrc, która jest wykonywana podczas uruchamiania WSL ubuntu.] 1
Na przykład może to być to,
.bashrc
jak wygląda Twój wygląd po edycji: (Dodałem tylko pierwszą linię na górze, reszta była już w mojej konfiguracji).Możesz zastąpić
hello world
polecenie,sudo service cron start
aby włączyć usługę cronjob. Jednak nadal musisz ręcznie wprowadzić hasło.3. Usuwanie pytania o hasło: Używając: https://askubuntu.com/questions/147241/execute-sudo-without-password
sudo visudo
<your WSL ubuntu username> ALL=(ALL) NOPASSWD: ALL
zq ALL=(ALL) NOPASSWD: ALL
y
następnie,<enter>
aby zapisać.sudo service cron status
)Kod uniemożliwiający monitowanie o hasło przy rozruchu wyglądałby na przykład (dodałem tylko ostatnią linię, reszta była już w mojej konfiguracji):
Pracując nad tym rozwiązaniem, dowiedziałem się, że cronjobs są przeznaczone do okresowego uruchamiania rzeczy, a nie do określonych zdarzeń, takich jak uruchamianie. Aby uruchomić rzeczy podczas uruchamiania w WSL, możesz użyć pliku
/home/<username>/.bashrc
.źródło
.bashrc
pliku w odpowiedzi, aby czytelnik dowiedział się, jak wygląda po edycji.Pobierz to -> https://github.com/troytse/wsl-autostart
I zamiast postępować zgodnie z instrukcjami dotyczącymi konfiguracji w rejestrze / polityce grupy / taskschd, po prostu upuść skrót do
start.vbs
folderu startowego:"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
Lub folder startowy systemu
"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"
Działa świetnie!
źródło