Systemd-timers gebruiken als vervanging voor cron-jobs
Als Linux-gebruiker bent u waarschijnlijk bekend met cron. Het heeft jarenlang gewerkt als de go-to Unix time-based job scheduler. Nu gebruiken veel gebruikers Systemd-timers om de dominantie van cron te vervangen. Dit artikel bespreekt de basisprincipes van het instellen van uw eigen systemd-timer en zorgt ervoor dat deze correct op uw systeem draait.
Waarom Systemd-timers gebruiken in plaats van Cron?
Een van de grootste verkoopargumenten van Systemd Timers is dat het volledig geïntegreerd is in het Systemd-ecosysteem. Dit betekent dat het heel eenvoudig is om verschillende Systemd-service-eenheden te plannen en te koppelen, waardoor het eenvoudiger is om taken te automatiseren in vergelijking met een traditionele cron-daemon.
Een ander voordeel van Systemd Timers ten opzichte van Cron is dat het meer gedetailleerde controle biedt over hoe uw geplande taken worden geactiveerd. Systemd Timers hebben bijvoorbeeld een OnBootSec
variabele, waarmee u uw service-eenheid kunt vertragen totdat een bepaalde hoeveelheid tijd verstrijkt na een succesvolle boot.
Ten slotte zijn Systemd Timers ook ongelooflijk nauwkeurig vergeleken met een standaard cron daemon. Standaard kan het taken tot op een microseconde volgen en uitvoeren met behulp van zijn AccuracySec
variabele. Dit is ongelooflijk handig als u een computer gebruikt die exacte timings vereist voor zijn geplande taken.
Systemd-timers installeren
Timers zijn een ingebouwde functie van Systemd. Dit betekent dat als u Systemd gebruikt als uw init-daemon, zoals het geval is met populaire Linux-distributies zoals Arch, Fedora en Ubuntu, uw machine al gebruikmaakt van deze functie op sommige van zijn systeemprocessen.
Om te controleren of uw distributie Systemd draait, kunt u de volgende opdracht uitvoeren:
Als u dit doet, wordt een lijst weergegeven van alle Systemd-eenheden, apparaten en timers die momenteel op uw systeem actief zijn.
Lijst met bestaande timers
De eenvoudigste manier om te controleren of er een timer loopt op uw huidige gebruikersaccount, is met de volgende opdracht:
U kunt de --all
vlag ook gebruiken om elke afzonderlijke timer in het systeem te controleren, inclusief de inactieve:
Als u dit doet, worden de datum en tijd afgedrukt waarop elke timer wordt geactiveerd, de aftelling tot dat punt, hoeveel tijd er is verstreken sinds de laatste keer dat de timer is geactiveerd, de naam van de timer zelf en de service die elke timereenheid activeert.
Een nieuwe service en timer maken
De eerste stap bij het maken van een Systemd-timer is het maken of vinden van een bestaande service om deze aan te koppelen. Dit komt omdat elke timer aan een bovenliggende service-eenheid moet worden gekoppeld. Deze sectie begeleidt u door het proces van het maken van een timer voor een aangepaste Systemd-service.
Begin met het aanmaken van de lege bestanden “.service” en “.timer” in uw thuismap:
Open uw nieuwe servicebestand met uw favoriete teksteditor:
Plak de volgende sjabloon in uw nieuwe servicebestand:
Sla uw “.service”-bestand op en open vervolgens uw lege “.timer”-bestand met dezelfde teksteditor:
Plak het volgende codeblok in uw timerbestand:
Ga naar de [Timer]
sectie en vervang de waarde van de OnCalendar
variabele met de datum en tijd waarop u wilt dat uw Systemd-eenheid wordt uitgevoerd. In mijn geval wil ik dat mijn programma elke dag precies om 11:43 uur wordt uitgevoerd.
Een monotone timer maken
Naast het instellen van een timer die op een specifieke datum loopt, is het ook mogelijk om een monotone timer te maken die relatief loopt ten opzichte van de huidige uptime van uw computer. Dit is handig als u een taak plant op een machine die niet constant draait, zoals op een desktop of laptop.
Om te beginnen opent u uw “.timer”-bestand en scrolt u naar beneden naar de [Timer]
sectie.
Verwijder zowel de OnCalendar
en Persistent
variabelen, voeg vervolgens OnBootSec
een tijdsinterval toe voor wanneer u uw unitbestand wilt uitvoeren. Bijvoorbeeld, door het in te stellen op “1hr” zal Systemd vertellen om uw opdracht te starten een uur nadat uw computer succesvol is opgestart.
Voeg de OnUnitActiveSec
variabele net onder OnBootSec
toe en geef vervolgens het interval op waarmee u wilt dat uw timer continu wordt uitgevoerd nadat uw systeem is opgestart. In mijn geval stel ik het in op “30min” omdat ik wil dat mijn taak elke 30 minuten wordt uitgevoerd na de eerste uitvoering.
Een tijdelijke timer maken
Een van de voordelen van Systemd Timer dat diep is geïntegreerd in Systemd is dat het kan profiteren van de andere aangrenzende programma’s van de init daemon. Het is bijvoorbeeld mogelijk om timers te gebruiken met Systemd-run om eenmalige tijdelijke taken op uw machine te maken.
Om een eenvoudige tijdelijke timer te maken, plakt u de volgende regel code in een terminalsessie en vervangt u de waarde van de --on-calendar
variabele door het interval waarop u uw opdracht wilt uitvoeren:
Voeg de opdracht die u wilt uitvoeren toe aan het einde van de regel en druk op Enterom de opdracht te plannen.
U kunt ook tijdelijke monotone timers maken met behulp van de variabelen --on-boot
en --on-unit-active
:
Controleer of uw tijdelijke timer nu in de wachtrij van de taakplanner van Systemd staat door de volgende opdracht uit te voeren:
De Systemd-timer uitvoeren
Om uw nieuwe Systemd Timer uit te voeren, moet u ervoor zorgen dat deze correct is geladen op uw huidige Systemd-sessie. Kopieer hiervoor zowel uw aangepaste service als timerbestand naar de servicedirectory van uw Systemd:
Laad de huidige configuratie van de init-daemon opnieuw:
Activeer zowel de service als de timer die u hebt gemaakt met systemctl
:
Controleer of u uw nieuwe timer correct hebt geladen door het volgende uit te voeren: sudo systemctl status my-new-timer.timer
op een nieuwe terminalsessie. In dit geval kunt u zien dat mijn timer nu is gepland en voorbereid om door het systeem te worden uitgevoerd.
Leren hoe u taken kunt plannen met behulp van Systemd Timers is slechts een onderdeel van het begrijpen hoe uw Linux-machine onder de motorkap werkt. Duik dieper in de interne werking van dit geweldige besturingssysteem door ons vergelijkingsartikel over Grub en Systemd-boot te bekijken.
Afbeelding tegoed: Alexandr Podvalny via Unsplash . Alle wijzigingen en screenshots door Ramces Red.
Geef een reactie