Windows heeft verschillende manieren om taken te automatiseren. De meest gebruikelijke tool is de Windows Taakplanner, maar als je het Windows Subsystem for Linux (WSL) gebruikt, is er ook de cron-daemon die taken op de achtergrond uitvoert voor je WSL-installatie.
Cron wordt niet standaard uitgevoerd
Op Windows 10 en Windows 11 wordt cron meegeleverd met Linux-omgevingen zoals Ubuntu. Het probleem is dat WSL cron niet automatisch start, wat betekent dat je geautomatiseerde taken niet standaard worden uitgevoerd.
Om dit op te lossen, zou je cron handmatig kunnen starten elke keer dat je de opdrachtregel opent, maar het handmatig starten van een tool die taken zou moeten automatiseren, mist een beetje het punt.
Gelukkig is er een eenvoudige manier om dit op te lossen, en hiervoor is de Taakplanner nodig.
Als je cron nog nooit in Linux hebt gebruikt om taken uit te voeren, bekijk dan onze vorige tutorial over het plannen van taken op Linux. Voor onze doeleinden hier gaan we ervan uit dat je al een aantal cron-jobs hebt gemaakt in je WSL-installatie en dat je hulp nodig hebt om ervoor te zorgen dat ze de hele tijd draaien in plaats van op cron te passen.
Voor deze tutorial gaan we gebruik maken van sudo service
om cron te controleren en te starten, wat de aanbevolen manier is om services te stoppen en te starten op moderne builds van Ubuntu – de meest populaire distributie voor WSL.
Houd er ook rekening mee dat deze tutorial ervan uitgaat dat u beheerdersrechten heeft op uw versie van WSL. Als u de enige gebruiker van uw pc bent en u WSL zelf hebt ingeschakeld, heeft u wel beheerdersrechten.
Tip: Dit werkt ook in het Windows-subsysteem voor Linux op Windows 11, niet alleen op Windows 10.
VERWANT: Taken plannen op Linux: een inleiding tot Crontab-bestanden
Linux voorbereiden
Het eerste dat we moeten doen, is de computer cron laten starten zonder wachtwoord. Wanneer u een service zoals cron start, gebruikt u het commando sudo service cron start
. Maar voor die opdracht is een wachtwoord vereist, waar Windows geen toegang toe heeft wanneer het opstart. De manier om dit te omzeilen 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 sudo visudo
. Druk op Enter op je toetsenbord, voer je Linux-wachtwoord in en druk nogmaals op Enter. Als u Ubuntu gebruikt, wordt het bestand “sudoers” geopend met behulp van de beginnersvriendelijke Nano-opdrachtregelteksteditor. Sudoers is een bestand voor systeembeheerders dat privileges en toegangsrechten voor gebruikers kan wijzigen.
Voeg de volgende opdracht toe aan de onderkant van het sudoers-bestand en druk vervolgens op Ctrl+o om op te slaan en op Ctrl+x om het bestand af te sluiten.
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
Dit sudoers-commando zegt dat elke gebruiker die voldoende rechten heeft om het sudo-commando te gebruiken (inclusief jou) geen wachtwoord nodig heeft om het commando uit te voeren sudo service cron start
, waarmee de cron-daemon wordt gestart.
Nadat u het bestand hebt opgeslagen, kunt u controleren of de opdracht zijn werk doet door te typen sudo service cron start
, en het zou cron moeten starten zonder om een ​​wachtwoord te vragen. Als dat werkt, laten we cron dan weer uitschakelen, zodat we kunnen testen of de taak die we in de volgende stap maken goed werkt. Om dat te doen, ren alsjeblieft sudo service cron stop
.
Cron instellen in de Windows Taakplanner
Dat is fase één van onze reis naar cron-automatisering. Laten we verder gaan naar deel 2 met de Taakplanner. Tik op de Windows-toets op het toetsenbord en zoek naar ‘Taakplanner’. Start de snelkoppeling “Taakplanner”.
Wanneer het opstart, kijk dan onder het gedeelte “Acties” en selecteer “Basistaak maken”.
Hiermee wordt de wizard Basistaak geopend. Eerst wordt u gevraagd de taak een naam te geven en een beschrijving te geven. Je kunt hier invullen wat je wilt. We noemden de taak ‘cron’ en de beschrijving is: ‘Een taak om cron te starten bij het opstarten van het systeem’. Klik nu op “Volgende”.
In het volgende gedeelte gaan we aan de slag. Ten eerste wil Windows weten wanneer we de taak willen uitvoeren. Kies het keuzerondje “Wanneer de computer start” en klik op “Volgende”.
In het volgende gedeelte willen we ‘Een programma starten’. Die optie is standaard geselecteerd, dus klik op ‘Volgende’.
Nu moeten we het programma specificeren dat we willen uitvoeren, namelijk WSL. Voer het volgende in het tekstinvoervak ​​”Programma/Script” in: C:WindowsSystem32wsl.exe
We moeten ook wat argumenten toevoegen, aangezien alles wat we tot nu toe hebben gedaan het starten van WSL is, maar binnen WSL moeten we Ubuntu vertellen om cron te starten. Dus voeg in het vak “Argumenten toevoegen” toe: sudo /usr/sbin/service cron start
Druk nog een keer op “Volgende”, vink het vakje aan met de tekst “Open het dialoogvenster Eigenschappen wanneer ik op Voltooien klik” en klik vervolgens op “Voltooien”.
De taak is gemaakt, maar we moeten nog een laatste ding doen om ervoor te zorgen dat alles werkt. Er wordt een nieuw venster geopend waarin de samenvatting wordt weergegeven van de taak die u hebt gemaakt, maar deze wordt alleen uitgevoerd als u bent aangemeld. We moeten het keuzerondje met de tekst ‘Uitvoeren of de gebruiker is aangemeld of niet’ selecteren en vervolgens op ‘OK’ drukken.
Laten we onze taak nu op twee manieren testen. Blader eerst in het hoofdvenster van de Taakplanner naar beneden totdat u uw taaknaam ziet. Als je de naam ‘cron’ hebt gebruikt, zou deze bovenaan de lijst moeten staan. Klik met de rechtermuisknop op de taak en selecteer “Uitvoeren”.
Ga dan terug naar je WSL-terminal en typ sudo service cron status
, en het zou moeten zeggen dat cron actief is. Als dit niet het geval is, controleer dan nogmaals of je alles correct hebt ingevoerd in de vorige stappen.
Als alles goed werkte bij de eerste controle, is het tijd voor de grote test. Start uw pc opnieuw op en wanneer u terugkomt, opent u een WSL-terminal en voert u sudo service cron status
, die zou moeten melden dat cron nu actief is.
Gefeliciteerd! Je hebt je eerste stap gezet in een grotere, geautomatiseerde wereld. Met cron op de achtergrond draaien de cronjobs die je configureert in WSL automatisch volgens schema.