Cum să lansați automat Cron în WSL pe Windows 10 și 11
Publicat: 2022-01-29Windows are mai multe moduri de automatizare a sarcinilor. Cel mai comun instrument este Windows Task Scheduler, dar dacă utilizați Windows Subsystem for Linux (WSL), există și demonul cron care rulează sarcini în fundal pentru instalarea WSL.
Cron nu rulează implicit
Pe Windows 10 și Windows 11, cron este inclus în mediile Linux precum Ubuntu. Problema este că WSL nu pornește automat cron, ceea ce înseamnă că sarcinile dvs. automatizate nu sunt executate implicit.
Pentru a remedia acest lucru, puteți porni manual cron de fiecare dată când deschideți linia de comandă, dar pornirea manuală a unui instrument care ar trebui să automatizeze sarcinile este oarecum ratată.
Din fericire, există o modalitate ușoară de a remedia acest lucru și necesită utilizarea Task Scheduler.
Dacă nu ați folosit niciodată cron în Linux pentru a rula sarcini, consultați tutorialul nostru anterior despre cum să programați sarcini pe Linux. Pentru scopurile noastre de aici, vom presupune că ați creat deja niște joburi cron în instalarea WSL și că aveți nevoie de ajutor pentru a vă asigura că acestea rulează în loc să îngrijească cron tot timpul.
Pentru acest tutorial, vom folosi sudo service
pentru a verifica și a porni cron, care este modalitatea recomandată de a opri și a porni serviciile pe versiunile moderne de Ubuntu - cea mai populară distribuție pentru WSL.
De asemenea, rețineți că acest tutorial presupune că aveți drepturi de administrator pe versiunea dvs. de WSL. Dacă sunteți singurul utilizator al computerului dvs. și ați activat WSL pe cont propriu, atunci aveți drepturi de administrator.
Sfat: Funcționează și în subsistemul Windows pentru Linux pe Windows 11, nu doar pe Windows 10.
LEGATE: Cum să programați sarcini pe Linux: o introducere în fișierele Crontab
Pregătiți Linux
Primul lucru pe care trebuie să-l facem este să permitem computerului să pornească cron fără o parolă. Când porniți un serviciu precum cron, utilizați comanda sudo service cron start
. Dar această comandă necesită o parolă, la care Windows nu va avea acces atunci când pornește. Soluția este să dezactivați cerința pentru o parolă pentru această comandă.
Pentru a face asta, deschideți fereastra terminalului WSL și tastați sudo visudo
. Apăsați Enter de pe tastatură, introduceți parola Linux și apăsați din nou tasta Enter. Dacă utilizați Ubuntu, acesta deschide fișierul „sudoers” folosind editorul de text Nano pentru începători. Sudoers este un fișier pentru administratorii de sistem care poate modifica privilegiile și drepturile de acces pentru utilizatori.
Adăugați următoarea comandă în partea de jos a fișierului sudoers, apoi apăsați Ctrl+o pentru a salva și Ctrl+x pentru a ieși din fișier.
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
Această comandă sudoers spune că orice utilizator care are suficiente privilegii pentru a utiliza comanda sudo (care ar trebui să vă includă) nu are nevoie de o parolă pentru a rula comanda sudo service cron start
, care pornește demonul cron.
După ce ați salvat fișierul, puteți verifica dacă comanda își face treaba tastând sudo service cron start
și ar trebui să pornească cron fără a cere o parolă. Dacă a funcționat, să dezactivăm din nou cron, astfel încât să putem testa dacă sarcina pe care o creăm în pasul următor funcționează corect. Pentru a face asta, rulați sudo service cron stop
.
Configurați Cron în Windows Task Scheduler
Aceasta este prima etapă a călătoriei noastre către automatizarea cron. Să trecem la partea 2 cu Task Scheduler. Atingeți tasta Windows de pe tastatură, apoi căutați „Programator de activități”. Lansați comanda rapidă „Programator de activități”.
Când pornește, căutați în secțiunea „Acțiuni” și selectați „Creați sarcină de bază”.
Aceasta deschide Expertul pentru sarcini de bază. În primul rând, vă va cere să denumiți sarcina și să îi oferiți o descriere. Puteți introduce tot ce doriți aici. Am numit sarcina „cron”, iar descrierea este „O sarcină pentru a porni cron la pornirea sistemului”. Acum, apăsați pe „Următorul”.
În secțiunea următoare, trecem la treabă. În primul rând, Windows vrea să știe când vrem să rulăm sarcina. Alegeți butonul radio „Când pornește computerul” și faceți clic pe „Următorul”.
În secțiunea următoare, vrem „Porniți un program”. Această opțiune este selectată implicit, așa că faceți clic pe „Următorul”.
Acum, trebuie să specificăm programul pe care vrem să-l rulăm, care este WSL. Introduceți următoarele în caseta de introducere a textului „Program/Script”: C:\Windows\System32\wsl.exe
De asemenea, trebuie să adăugăm câteva argumente, deoarece tot ce am făcut până acum a fost pornirea WSL, dar în interiorul WSL, trebuie să îi spunem lui Ubuntu să pornească cron. Deci, în caseta „Adăugați argumente”, adăugați: sudo /usr/sbin/service cron start
Apăsați încă o dată pe „Următorul”, bifați caseta care spune „Deschideți dialogul de proprietăți când dau clic pe Terminare”, apoi faceți clic pe „Terminare”.
Sarcina este creată, dar trebuie să facem un ultim lucru pentru a ne asigura că totul funcționează. Se va deschide o nouă fereastră, care arată rezumatul sarcinii pe care ați creat-o, dar este setat să ruleze numai când sunteți conectat. Trebuie să selectăm butonul radio care spune „Rulează dacă utilizatorul este conectat sau nu”, apoi apăsăm „OK”.
Acum, să ne testăm sarcina în două moduri. Mai întâi, în fereastra principală a Task Scheduler, derulați în jos până când vedeți numele sarcinii. Dacă ați folosit numele „cron”, acesta ar trebui să fie găsit în partea de sus a listei. Faceți clic dreapta pe sarcină și selectați „Run”.
Apoi, reveniți la terminalul dvs. WSL și introduceți sudo service cron status
și ar trebui să spună că cron rulează. Dacă nu este, verificați din nou dacă ați introdus totul corect în pașii anteriori.
Dacă totul a funcționat corect la prima verificare, este timpul pentru marele test. Reporniți computerul și, când vă întoarceți, deschideți un terminal WSL și rulați sudo service cron status
, care ar trebui să raporteze că cron rulează acum.
Felicitări! Ai făcut primul pas într-o lume mai mare, automatizată. Cu cron rulând în fundal, cronjob-urile pe care le configurați în WSL se vor rula automat conform programului.