Windows are mai multe moduri de a automatiza sarcini. Cel mai comun instrument este Windows Task Scheduler, dar dacă utilizați tipul Subsistemul pentru Windows pentru Linux (WSL) , Există, de asemenea, cron daemon care rulează sarcini în fundal pentru WSL de instalare.
Cron nu rulează Implicit
Pe Windows 10 și Windows 11, cron vine inclus cu mediile Linux, cum ar fi Ubuntu. Problema este că WSL nu pornește automat cron, ceea ce înseamnă că sarcinile automate nu sunt obtinerea executate în mod implicit.
Pentru a remedia acest lucru, ai putea începe cron manual de fiecare dată când deschideți linia de comandă, dar pornind de manual un instrument care ar trebui să automatizeze sarcini este un fel de lipsă punct.
Din fericire, există o modalitate ușoară de a rezolva această problemă, și necesită utilizarea Task Scheduler.
Dacă nu ați folosit cron în Linux pentru a rula taskuri, consultați programul de instruire anterioare privind cum să programați sarcini pe Linux . Pentru scopurile noastre aici, vom să presupunem că ați creat deja unele locuri de muncă cron în WSL de instalare și că aveți nevoie de ajutor pentru a se asigura că se execută în loc de babysitting cron tot timpul.
Pentru acest tutorial, vom utiliza
serviciul sudo
pentru a verifica și de a începe cron, care este modul recomandat de a opri și porni pe servicii moderne se bazează Ubuntu-cel mai popular pentru distribuția WSL.
De asemenea, rețineți că acest tutorial presupune că aveți drepturi de administrator pe versiunea de WSL. Dacă sunteți singurul utilizator al PC-ului și ai activat WSL pe cont propriu, atunci aveți drepturi de administrator.
Bacsis: Această opțiune funcționează la Ferestre Subsistem pentru Linux pe Windows 11 , Prea nu doar pe Windows 10.
LEGATE DE: Cum să programați sarcinile pe Linux: o introducere în fișierele Crontab
Se prepară Linux
Primul lucru pe care trebuie să facem este permite computerului să înceapă cron fără parolă. Când porniți un serviciu ca cron, folosiți comanda
sudo Pornire serviciu cron
. Dar această comandă necesită o parolă, care Windows nu va avea acces la atunci când pornește în sus. Modul în jurul valorii de acest lucru este de a opri solicitarea unei parole pentru această comandă.
Pentru a face acest lucru, deschideți fereastra WSL terminal și introduceți în
sudo visudo
. Hit Enter de pe tastatură, introduceți parola Linux, și a lovit din nou tasta Enter. Dacă utilizați Ubuntu, acest lucru deschide fișierul „sudoers“ folosind începător-friendly
Nano editor de text în linia de comandă
.
sudoers
este un fișier pentru administratorii de sistem care pot schimba privilegii și drepturi de acces pentru utilizatori.
Adăugați următoarea comandă la partea de jos a fișierului sudoers, și apoi apăsați pe Ctrl + O pentru a salva și Ctrl + x pentru a ieși din fișierul.
% sudo ALL = NOPASSWD: start cron / usr / sbin / serviciu
Această comandă sudoers spune că orice utilizator care are suficiente privilegii pentru a utiliza comanda sudo (care ar trebui să includă) nu necesită o parolă pentru a rula comanda
sudo Pornire serviciu cron
, Care începe cron daemon.
După ce ați salvat fișierul, puteți verifica dacă comanda face treaba prin tastarea
sudo Pornire serviciu cron
, Și ar trebui să înceapă cron fără a cere o parolă. În cazul în care a lucrat, să ne întoarcem cron din nou, astfel încât să putem testa că sarcina suntem creați în etapa următoare funcționează în mod corespunzător. Pentru a face acest lucru, vă rugăm să rulați
sudo oprire serviciu cron
.
Set Up Cron în Windows Task Scheduler
Aceasta este faza a călătoriei noastre spre automatizare cron. muta Să trecem la partea 2 cu Task Scheduler. Apăsați tasta Windows de pe tastatură, și apoi căutați „Task Scheduler“. Lansarea „Task Scheduler“ scurtătură.
Când se pornește, căutați sub secțiunea „Acțiuni“ și selectați „Create de bază de sarcini.“
Aceasta deschide expertul de sarcini de bază. În primul rând, vă va cere să numiți sarcina și să o dați o descriere. Puteți introduce ceea ce doriți aici. Am sunat la sarcina "Cron", iar descrierea este: "O sarcină de a începe cron la pornirea sistemului". Acum, apăsați pe "Următorul".
În secțiunea următoare, ajungem la afaceri. În primul rând, Windows vrea să știe când vrem să conducem sarcina. Alegeți "Când computerul pornește" Butonul radio și faceți clic pe "Următorul".
În secțiunea următoare, vrem "începem un program". Această opțiune este selectată în mod implicit, așa că faceți clic pe "Următorul".
Acum, trebuie să specificăm programul pe care vrem să-l difuzați, 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 ceea ce am făcut până acum este să începem WSL, dar în interiorul WSL, trebuie să-i spunem lui Ubuntu să înceapă Cron. Deci, în caseta "Adăugați argumentele", adăugați:
sudo / usr / sbin / serviciu pornire cron
Apăsați încă o dată "următorul", bifați caseta care spune "Deschideți dialogul Proprietăți când faceți clic pe Finalizare", apoi faceți clic pe "Finish".
Sarcina este creată, dar trebuie să facem un lucru final pentru a vă asigura că totul funcționează. O fereastră nouă se va deschide, ceea ce arată rezumatul sarcinii pe care le-ați creat, dar este setat să rulați când sunteți conectat (ă). Trebuie să selectăm butonul radio care spune că "Executați dacă utilizatorul este conectat sau nu", apoi apăsați "OK".
Acum, să ne încercăm sarcina în două moduri. În primul rând, în fereastra principală a planificatorului de sarcini, derulați în jos până când vedeți numele dvs. de activitate. Dacă ați folosit numele "Cron", ar trebui să se găsească spre partea de sus a listei. Faceți clic dreapta pe sarcină și selectați "Rulați".
Apoi, reveniți la terminalul WSL și introduceți
Sudo Service Stare Cron
și ar trebui să spună că se execută Cron. Dacă nu este, verificați dublu că ați introdus totul corect în pașii anteriori.
Dacă totul a funcționat corect în primul cec, este timpul pentru testul mare. Reporniți PC-ul dvs. și când vă întoarceți, deschideți un terminal WSL și executați
Sudo Service Stare Cron
, care ar trebui să raporteze că acumulează cron.
Felicitări! Ați luat primul pas într-o lume mai mare, automată. Cu CRON care rulează în fundal, cronjoburile pe care le configurați în WSL vor funcționa automat la program.