Cum să lansați automat Cron în WSL pe Windows 10 și 11

Publicat: 2022-01-29
O mână care ține un cronometru.
Miliard de fotografii/Shutterstock.com

Windows 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.

O fereastră de terminal Windows WSL care arată că cron nu rulează.

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.

Publicitate

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.

Publicitate

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”.

Rezultatele căutării în Windows 10 afișând Task Scheduler ca opțiune.

Când pornește, căutați în secțiunea „Acțiuni” și selectați „Creați sarcină de bază”.

Programatorul de activități din Windows 10 cu o săgeată roșie care indică opțiunea „Creează 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”.

Un set de butoane radio în Windows 10 cu o săgeată roșie care indică opțiunea „Când pornește computerul”.

Î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”.

Opțiunile programului Windows 10 Task Scheduler cu săgeți roșii care indică calea programului și caseta de introducere a textului cu argumente suplimentare.

Publicitate

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

Fereastra finală de creare a sarcinii din Task Scheduler din Windows 10, cu o săgeată roșie care indică opțiunea de a deschide fereastra cu proprietățile sarcinii la final.

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”.

O fereastră de proprietăți Windows Task cu o săgeată roșie care indică opțiunea „Execută indiferent dacă utilizatorul este conectat sau nu”.

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”.

O fereastră de terminal care arată că cron rulează.

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.

Publicitate

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.