Windows are mai multe moduri de a automatiza sarcinile. Cel mai obișnuit instrument este Windows Task Scheduler, dar dacă utilizați subsistemul Windows pentru 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 medii Linux, cum ar fi Ubuntu. Problema este că WSL nu pornește cron automat, ceea ce înseamnă că sarcinile dvs. automatizate nu sunt executate în mod implicit.
Pentru a remedia acest lucru, puteți începe cron manual de fiecare dată când deschideți linia de comandă, dar pornirea manuală a unui instrument care ar trebui să automatizeze sarcinile este un fel de lipsă a punctului.
Din fericire, există o modalitate ușoară de a remedia acest lucru și necesită utilizarea Programatorului de activități.
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 câteva joburi cron în instalarea WSL și că aveți nevoie de ajutor pentru a vă asigura că acestea rulează în loc să-l îngrijească pe cron tot timpul.
Pentru acest tutorial, vom folosi sudo service
pentru a verifica și porni cron, care este modalitatea recomandată de a opri și 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 pentru 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.
Bacsis: Acest lucru funcționează și în subsistemul Windows pentru Linux pe Windows 11 – nu doar pe Windows 10.
LEGATE DE: 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 acea comandă necesită o parolă, la care Windows nu va avea acces la pornire. Modalitatea de a rezolva acest lucru este de a dezactiva cerința pentru o parolă pentru această comandă.
Pentru aceasta, deschideți fereastra terminalului WSL și tastați sudo visudo
. Apăsați Enter pe tastatură, introduceți parola Linux și apăsați din nou tasta Enter. Dacă utilizați Ubuntu, acesta deschide fișierul „sudoers” utilizând editorul de text din linia de comandă 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 destule privilegii pentru a utiliza comanda sudo (care ar trebui să vă includă) nu necesită 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ă înceapă cron fără a cere o parolă. Dacă a funcționat, să oprim din nou cronul, astfel încât să putem testa că sarcina pe care o creăm în pasul următor funcționează corect. Pentru a face acest lucru, vă rugăm să alergați sudo service cron stop
.
Configurați Cron în programul de activități Windows
Aceasta este prima fază 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 „Programare activități”. Lansați comanda rapidă „Programator activități”.
Când pornește, căutați sub secțiunea „Acțiuni” și selectați „Creați o activitate de bază”.
Aceasta deschide Expertul de activități de bază. În primul rând, vă va cere să denumiți sarcina și să îi oferiți o descriere. Puteți introduce orice doriți aici. Am numit sarcina „cron”, iar descrierea este „O sarcină pentru a porni cron la pornirea sistemului”. Acum, apăsați „Următorul”.
În secțiunea următoare, ne apucăm de treabă. În primul rând, Windows vrea să știe când vrem să executăm sarcina. Alegeți butonul radio „Când pornește computerul” și faceți clic pe „Următorul”.
În secțiunea următoare, dorim „Începeți un program”. Această opțiune este selectată în mod prestabilit, deci faceți clic pe „Următorul”.
Acum, trebuie să specificăm programul pe care dorim să-l rulăm, care este WSL. Introduceți următoarele în caseta de introducere a textului „Program / Script”: C:WindowsSystem32wsl.exe
De asemenea, trebuie să adăugăm câteva argumente, deoarece tot ce am făcut până acum este să pornim WSL, dar în interiorul WSL, trebuie să spunem Ubuntu să înceapă cron. Deci, în caseta „Adăugați argumente”, adăugați: sudo /usr/sbin/service cron start
Apăsați „Următorul” încă o dată, bifați caseta care scrie „Deschideți dialogul Proprietăți când fac clic pe Terminare”, apoi faceți clic pe „Finalizare”.
Sarcina este creată, dar trebuie să facem un ultim lucru pentru a ne asigura că totul funcționează. Se va deschide o fereastră nouă, 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 „Rulați dacă utilizatorul este conectat sau nu” și apoi apăsați „OK”.
Acum, să testăm sarcina noastră în două moduri. Mai întâi, în fereastra principală a Programatorului de activități, derulați în jos până când vedeți numele activității dvs. 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 „Rulați”.
Apoi, reveniți la terminalul WSL și tastați sudo service cron status
, și ar trebui să spună că cron rulează. În caz contrar, verificați dacă ați introdus totul corect în pașii anteriori.
Dacă totul a funcționat corect în prima verificare, este timpul pentru marele test. Reporniți computerul și, când reveniț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 tău pas într-o lume mai largă și automată. Cu cron rulat în fundal, cronjob-urile pe care le configurați în WSL vor rula automat în mod programat.