Puncte:4

Cum să porniți un anumit serviciu când Ubuntu este pornit pe WSL2

drapel th

Trebuie să fug sudo service postgresql start de fiecare dată când pornesc Ubuntu pe WSL2.

Cum pot face ca serviciul să pornească automat când pornesc Ubuntu?

WSL nu folosește systemd, așa că sudo systemctl activează postgresql nu merge.

$ sudo systemctl status postgresql
Sistemul nu a fost pornit cu systemd ca sistem init (PID 1). 
Nu pot opera. Nu s-a putut conecta la autobuz: gazda este oprită

Există o modalitate standard de a începe un serviciu la pornire?

Editați | ×

Vreau să pornesc serviciul la pornirea Ubuntu, nu la pornirea Windows.

muru avatar
drapel us
Răspunde asta la întrebarea ta? [WSL Ubuntu, există o modalitate ușoară de a începe automat bash la pornirea Windows?](https://askubuntu.com/questions/1177273/wsl-ubuntu-is-there-an-easy-way-to-have- bash-start-automat-pe-windows-sta)
muru avatar
drapel us
(Dacă nu v-ați referit la pornire la pornire, ci numai când rulați WSL, atunci doar introducerea „sudo service postgresql start” în „.bashrc” ar trebui să funcționeze bine.)
ironsand avatar
drapel th
Vreau doar să încep un serviciu când este lansat WSL. Și aș evita să comand `sudo` în `.bashrc`. În acest fel, trebuie întotdeauna să-mi introduc parola când deschid file noi.
muru avatar
drapel us
Ați adăuga o regulă NOPASSWD doar pentru această comandă, astfel încât să nu vi se solicite o parolă.
ironsand avatar
drapel th
Am adăugat `ironsand ALL=NOPASSWD:/usr/sbin/service postgresql` la `/etc/sudoer` și repornesc wsl, dar tot trebuie să introduc parola de fiecare dată. Poate aceasta este o altă întrebare, ar trebui să deschid o întrebare nouă?
muru avatar
drapel us
Dacă utilizați un argument la comandă, atunci acesta trebuie să se potrivească exact cu linia de comandă (`sudo service postgresql` != `sudo service postgresql start`. Încercați să adăugați `start` și la linia sudoers. Nu ar trebui să aveți pentru a reporni WSL, modificările aduse `sudoers` au efect imediat.
Puncte:6
drapel vn

Odată cu lansarea recentă a Windows 11, există două moduri preferate de a face acest lucru.

Windows 11

Acum puteți executa o linie de comandă arbitrară atunci când porniți o instanță prin crearea/editarea /etc/wsl.conf (prin sudo) cu următoarele:

[boot]
command="service postgresql start"

Această comandă rulează ca root și nu generează nicio ieșire. Dacă trebuie să rulați mai multe comenzi, acestea ar trebui să fie separate prin punct și virgulă (sau ceva de genul &&) în interiorul comanda= şir.

Windows 10

Pe WSL cu Windows 10, există încă o modalitate mai ușoară, IMHO, decât introducerea unui sudo comandă la pornire și vă faceți griji sudoeri.

sudoeri este cu siguranță modul canonic (fără joc de cuvinte, doar un accident fericit) de a face acest lucru pe Ubuntu, dar pe WSL este pur și simplu mai ușor să utilizați următoarea sintaxă în dvs. ~/.bashrc:

 wsl.exe -u serviciu rădăcină stare postgresql || wsl.exe -u root service postgresql start

wsl.exe -u root nu necesită o parolă. Din PowerShell și CMD, poate fi apelat fără executabil, dar din cadrul WSL necesită extensia.

Notă, per @mbomb007comentariul lui, acesta va genera unul sau două mesaje de fiecare dată când începeți. Pentru a suprima acest lucru, utilizați:

wsl.exe -u serviciu rădăcină stare postgresql > /dev/null || wsl.exe -u serviciu rădăcină postgresql start > /dev/null
mbomb007 avatar
drapel so
Pentru a evita să vedeți rezultatul de fiecare dată când deschideți WSL, utilizați `wsl.exe -u root service postgresql status > /dev/null || wsl.exe -u root service postgresql start > /dev/null`.
Jeppe avatar
drapel es
Soluția Windows 11 nu funcționează pentru mine.. serviciul este încă inactiv. Pot spune că se încarcă mai lent înainte de a afișa „Sleeping for 1 second to let systemd settle”.
NotTheDr01ds avatar
drapel vn
@Jeppe Se pare că folosești un script Systemd -- Poate WSL2Hacks sau Genie? Asta va schimba *o mulțime* de comportament în sistemul tău. Dacă Systemd „funcționează”, trebuie doar să utilizați metodele normale `systemctl` pentru a porni automat -- Ceva de genul `sudo systemctl enable `. Dar vă recomandăm să înțelegeți posibilele avertismente pe care le puteți întâlni cu Systemd sub WSL2. Acesta este doar unul dintre multele lucruri care vor fi diferite.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.