Windows heeft verschillende manieren om taken te automatiseren. De meest voorkomende tool is de Windows-taakplanner, maar als u de Windows Subsysteem voor Linux (WSL) , er is ook de Cron Daemon die taken op de achtergrond voor uw WSL-installatie uitvoert.
Cron loopt standaard niet
Op Windows 10 en Windows 11 wordt Cron geleverd bij Linux-omgevingen zoals Ubuntu. Het probleem is dat WSL niet automatisch met Cron begint, wat betekent dat uw geautomatiseerde taken niet standaard worden uitgevoerd.
Om dit te verhelpen, kunt u de CRON handmatig beginnen telkens wanneer u de opdrachtregel opent, maar het handmatig starten van een tool die de taken moet automatiseren, is het punt van het punt dat het punt ontbreekt.
Gelukkig is er een gemakkelijke manier om dit te verhelpen, en het vereist het gebruik van de taakplanner.
Als je nooit Cron in Linux hebt gebruikt om taken uit te voeren, bekijk dan onze vorige tutorial over Hoe taken op Linux te plannen . Voor onze doeleinden hier, gaan we ervan uit dat je al een aantal cron-vacatures hebt gemaakt in je WSL-installatie en dat je hulp nodig hebt om ervoor te zorgen dat ze de hele tijd worden uitgevoerd in plaats van een babysit-cron.
Voor deze tutorial gaan we gebruiken
sudo-service
Om Cron te controleren en te starten, de aanbevolen manier om services te stoppen en te starten op moderne builds van Ubuntu - de meest populaire distributie voor WSL.
Merk ook op dat deze tutorial aanneemt dat u beheerdersrechten hebt op uw versie van WSL. Als u de enige gebruiker van uw pc bent en u alleen WSL hebt ingeschakeld, dan heeft u beheerdersrechten.
Tip: Dit werkt in de Windows Subsysteem voor Linux op Windows 11 , ook niet alleen op Windows 10.
VERWANT: Hoe taken plannen op Linux: een inleiding tot Crontab-bestanden
Maak Linux voor
Het eerste dat we moeten doen, is de computer toestaan Cron zonder wachtwoord te starten. Wanneer u een service als CRON start, gebruikt u de opdracht
Sudo Service Cron Start
. Maar die opdracht vereist een wachtwoord, welke Windows geen toegang heeft tot wanneer deze start. De manier waarop dit is om de vereiste voor een wachtwoord voor deze opdracht uit te schakelen.
Om dat te doen, opent u uw WSL-terminalvenster en typt u in
sudo visudo
. Druk op ENTER op uw toetsenbord, voer uw Linux-wachtwoord in en druk opnieuw op de ENTER-toets. Als u Ubuntu gebruikt, opent dit het bestand "Sudoers" met behulp van de Beginner-vriendelijke
Nano Command-Line Text Editor
.
Sudoers
is een bestand voor systeembeheerders die privileges en toegangsrechten voor gebruikers kunnen wijzigen.
Voeg de volgende opdracht toe aan de onderkant van het bestand Sudoers en druk vervolgens op CTRL + O om op te slaan en Ctrl + X om het bestand te verlaten.
% SUDO ALL = NOPASSWD: / USR / SBIN / SERVICE CRON START
Deze opdracht Sudoers zegt dat elke gebruiker die voldoende privileges heeft om de SUDO-opdracht te gebruiken (die u moet bevatten) vereist geen wachtwoord om de opdracht uit te voeren
Sudo Service Cron Start
, dat de Cron Daemon start.
Nadat u het bestand hebt opgeslagen, kunt u controleren of de opdracht zijn taak doet door te typen
Sudo Service Cron Start
, en het zou CRON moeten beginnen zonder om een wachtwoord te vragen. Als dat werkte, laten we het cron weer uitschakelen, zodat we kunnen testen dat de taak die we in de volgende stap maken correct werken. Om dat te doen, ren dan
Sudo Service Cron Stop
.
Stel Cron in in de taakplanner van Windows
Dat is fase een van onze reis naar Cron Automation. Laten we verder gaan naar deel 2 met de taakplanner. Tik op de Windows-toets op het toetsenbord en zoek vervolgens naar "Taakplanner". Start de snelkoppeling "Taakplanner".
Wanneer het opstart, kijk dan onder het gedeelte "Acties" en selecteert u "Basic-taak maken".
Dit opent de Task Wizard Basic. In de eerste plaats gaat het om u te vragen om de taak een naam en geef het een beschrijving. U kunt invoeren wat je hier wilt. We belden de taak “cron” en de beschrijving is: “Een taak om cron te starten bij het opstarten.” Nu, hit “Next.”
In de volgende paragraaf komen we tot zaken komen. Ten eerste, Windows wil weten wanneer we willen de taak uit te voeren. Kies het “bij opstarten computer” radio-knop en klik op “Volgende”.
In de volgende paragraaf willen we “Start een programma.” Die optie is standaard geselecteerd, dus klik op “Volgende”.
Nu moeten we het programma dat we willen lopen, dat is WSL specificeren. Voer het volgende in het “Programma / Script” tekstinvoerkader:
C: \ Windows \ System32 \ wsl.exe
We moeten ook een aantal argumenten toe te voegen, omdat alles wat we tot nu toe heb gedaan is beginnen met WSL, maar binnen WSL, moeten we Ubuntu vertellen om cron te starten. Dus, in het vak “Argumenten toevoegen”, toe te voegen:
sudo / usr / sbin / service cron start
Hit “Next” nog een keer, vinkt u het vakje dat zegt: “Open het dialoogvenster Eigenschappen Toen ik Klik op Voltooien,” en vervolgens op “Finish.”
De taak is gemaakt, maar we moeten nog een laatste ding te doen om ervoor te zorgen dat alles werkt. Een nieuw venster wordt geopend, waardoor de samenvatting van de taak die u hebt gemaakt laat zien, maar het is alleen ingesteld om te werken als je ingelogd bent op. We moeten naar de radio knop die zegt “Run Of gebruiker is aangemeld of niet,” en dan op “OK.”
Nu, laten we testen onze taak op twee manieren. In de eerste plaats in het hoofdvenster van de Task Scheduler, scroll naar beneden totdat u uw taak naam. Als u de naam gebruikte “cron,” moet worden gevonden in de richting van de top van de lijst. Klik rechts op de taak en selecteer “Run.”
Ga dan terug naar je WSL terminal en typ
sudo dienst cron-status
, En het moet zeggen dat cron wordt uitgevoerd. Als het niet, dubbel-check die u hebt ingevoerd alles correct in de vorige stappen.
Als alles naar behoren werkte in de eerste controle, is het tijd voor de grote test. Start uw PC, en als je terug bent, opent u een WSL terminal en run
sudo dienst cron-status
, Die moet melden dat cron draait nu.
Gefeliciteerd! Je hebt je eerste stap in een grotere, geautomatiseerde wereld genomen. Met cron op de achtergrond draaien, zal de cronjobs die u configureert in WSL automatisch worden uitgevoerd op schema.