Systemd Timers gebruiken als vervanging voor Cron
Als een Linux-gebruiker bent u waarschijnlijk bekend met cron. Het heeft jarenlang gewerkt als de go-to Unix tijdgebaseerde taakplanner. Nu zien veel gebruikers dat Systemd-timers de dominantie van cron beginnen te vervangen.
Dit artikel bespreekt de basisprincipes van het instellen van uw eigen timer en zorgt ervoor dat deze correct werkt op uw systeem.
Gerelateerd : 4 nuttige alternatieven voor Cron voor Linux
Installatie?
Als je Systemd al gebruikt als een init-systeem - veel populaire Linux-distros draaien het standaard uit, inclusief Arch, Debian, Fedora, Red Hat en Ubuntu - je zult timers al in gebruik zien. Er is niets anders over dan alleen die functie te gebruiken die al is geïnstalleerd.
Lijst bestaande timers
De eenvoudigste manier om te controleren of een timer op uw computer bestaat, is met de volgende opdracht:
systemctl list-timers
U hoeft dit niet als root uit te voeren.
systemctl list-timers --all
De optie --all
hier toont ook inactieve timers. Er zijn momenteel geen inactieve timers op dit systeem.
Je zou een uitvoer moeten vinden die lijkt op de volgende afbeelding:
U kunt de datum en tijd zien waarop elke timer zal worden geactiveerd, het aftellen tot dat moment, hoeveel tijd verstreken is sinds de laatste keer dat deze is afgespeeld, de unitnaam van de timer zelf en de service die elke timereenheid activeert.
Alle timers moeten gepaard worden met een overeenkomstige service. In het volgende gedeelte ziet u hoe u een ".timer" -bestand maakt dat een ".service" -bestand activeert.
Een nieuwe timer maken
Je kunt een nieuwe timer maken door een aangepast .timer-bestand te plaatsen in "/ etc / systemd / system /." Bij het maken van een nieuwe timer voor mijn DuckDNS dynamische DNS-servicebestand, heb ik deze tekst bereikt:
[Eenheid] Beschrijving = Update duckdns dynamic DNS [Timer] OnCalendar = * - * - * 11:43:00 Persistent = true [Install] WantedBy = timers.doel
1. [Unit] -sectie
De "Description = ..." optie in het bestand vertelt u de naam / beschrijving van de timer zelf. In dit geval zal mijn "duckdns.timer" mijn DNS updaten door het "duckdns.service" bestand te vertellen om een reeks commando's uit te voeren.
Je kunt de bewoording na "Beschrijving =" wijzigen om te zeggen wat je maar wilt.
2. [Timer] -sectie
"OnCalendar = ..." toont hier een manier om de timer te vertellen wanneer te activeren. *-*-*
staat voor "Jaarmaanddag, en de sterretjes betekenen dat het elke dag van elke maand van elk jaar vanaf hier verder zal lopen. De tijd die volgt op de sterretjes geeft aan op welk tijdstip van de dag de timer moet worden uitgevoerd.
"Persistent = true" betekent alleen dat de timer automatisch wordt uitgevoerd als deze de vorige starttijd heeft gemist. Dit kan gebeuren omdat de computer was uitgeschakeld voordat het evenement kon plaatsvinden. Dit is optioneel maar wordt aanbevolen.
3. [Installeren] sectie
Ten slotte laat "WantedBy = timers.target" zien dat het Systemd timers.target dit .timer-bestand zal gebruiken. Deze regel in het bestand toont de keten van afhankelijkheid van het ene bestand naar het andere. U moet deze regel niet weglaten of wijzigen.
Andere opties
Je kunt veel andere functies vinden door de man-pagina van Systemd te scannen met man systemd.timer
. Navigeer naar het gedeelte "OPTIES" om opties voor nauwkeurigheid, persistentie en werking na het opstarten te ontdekken.
De timer uitvoeren
Activeer elke timer die je hebt gemaakt met de systemctl enable
en systemctl start
.
sudo systemctl enable duckdns.timer sudo systemctl start duckdns.timer
Kijk opnieuw naar systemctl list-timers
om uw timer in actie te zien.
U kunt zien of uw timer volgens verwachting liep door het bijbehorende servicebestand met de systemctl status
. In dit geval kun je zien dat mijn timer om 11:43:00 liep zoals het zou moeten.
Conclusie
Hoewel veel programma's van derden, waaronder DuckDNS, worden geleverd met scripts die hen in staat stellen om waar nodig bij te werken, is het creëren van timers in Systemd een nuttige vaardigheid om te weten. Mijn creatie van een timer voor DuckDNS was hier niet nodig, maar het laat zien hoe andere soorten Systemd-timers zouden werken.
Deze kennis zal bijvoorbeeld nuttig zijn voor het maken en uitvoeren van uw eigen Bash-scripts. U kunt het zelfs gebruiken om een bestaande timer te wijzigen om beter aan uw voorkeuren te voldoen. Bovendien is het altijd goed om te weten hoe uw computer werkt en aangezien Systemd vele basisfuncties bestuurt, kan dit deel van de puzzel u helpen beter inzicht te krijgen in de manier waarop gebeurtenissen elke dag worden geactiveerd.
Bedankt voor het volgende. Veel succes met het maken van je eigen timers.