So verwenden Sie System-Timer als Cron-Ersatz
Als Linux-Benutzer sind Sie wahrscheinlich mit cron vertraut. Es hat viele Jahre als Unix-Zeit-basierten Job-Scheduler gearbeitet. Jetzt sehen viele Benutzer Systemd-Timer beginnen, die Dominanz von Cron zu ersetzen.
Dieser Artikel beschreibt die Grundlagen zum Einrichten eines eigenen Timers und stellt sicher, dass er auf Ihrem System ordnungsgemäß ausgeführt wird.
Verwandt : 4 Nützliche Cron Alternativen für Linux
Installation?
Wenn Sie Systemd bereits als Init-System verwenden - viele gängige Linux-Distributionen führen es standardmäßig aus, einschließlich Arch, Debian, Fedora, Red Hat und Ubuntu - werden Sie sehen, dass Timer bereits verwendet werden. Es gibt nichts weiter zu tun als die bereits installierte Funktion.
Vorhandene Timer auflisten
Der einfachste Weg, um zu überprüfen, ob ein Timer auf Ihrem Computer existiert, ist der Befehl:
systemctl Listen-Timer
Sie müssen das nicht als root ausführen.
systemctl list-timers --all
Die Option --all
hier zeigt auch inaktive Timer an. Derzeit sind keine inaktiven Timer auf diesem System vorhanden.
Sie sollten eine Ausgabe ähnlich der folgenden Abbildung finden:
Sie können das Datum und die Uhrzeit sehen, zu der jeder Timer aktiviert wird, den Countdown bis zu diesem Zeitpunkt, die vergangene Zeit, den Gerätenamen des Timers und den Dienst, den jede Timer-Einheit aktiviert.
Alle Timer müssen mit einem entsprechenden Service gekoppelt sein. Im nächsten Abschnitt erfahren Sie, wie Sie eine ".timer" -Datei erstellen, die eine ".service" -Datei aktiviert.
Erstellen eines neuen Timers
Sie können einen neuen Timer erstellen, indem Sie eine benutzerdefinierte .timer-Datei in "/ etc / systemd / system /" platzieren. Beim Erstellen eines neuen Timers für meine dynamische DuckDNS-DNS-Datei habe ich diesen Text erhalten:
[Unit] Description = Aktualisiere duckdns dynamisches DNS [Timer] OnCalendar = * - * - * 11:43:00 Persistent = true [Install] WantedBy = timers.target
1. Abschnitt [Einheit]
Die Option "Description = ..." in der Datei gibt den Namen / die Beschreibung des Timers selbst an. In diesem Fall wird mein "duckdns.timer" meinen DNS aktualisieren, indem er die Datei "duckdns.service" anweist, eine Reihe von Befehlen auszuführen.
Sie können den Wortlaut nach "Description =" ändern, um zu sagen, was immer Sie möchten.
2. Abschnitt [Timer]
"OnCalendar = ..." zeigt hier eine Möglichkeit, dem Timer mitzuteilen, wann er aktiviert werden soll. *-*-*
steht für "Jahr-Monat-Tag", und die Sternchen bedeuten, dass es jeden Tag eines jeden Monats von hiernach vorwärts läuft. Die Zeit, die auf die Sternchen folgt, zeigt an, zu welcher Tageszeit der Timer laufen soll.
"Persistent = true" bedeutet nur, dass der Timer automatisch läuft, wenn er die vorherige Startzeit verpasst hat. Dies kann passieren, weil der Computer ausgeschaltet wurde, bevor das Ereignis stattfinden konnte. Dies ist optional, wird aber empfohlen.
3. Abschnitt [Installieren]
Schließlich zeigt "WantedBy = timers.target", dass das Systemd timers.target diese .timer-Datei verwendet. Diese Zeile in der Datei zeigt die Abhängigkeitskette von einer Datei zur anderen. Sie sollten diese Zeile nicht auslassen oder ändern.
Andere Optionen
Sie können viele andere Funktionen finden, indem Sie die man-Seite von Systemd mit man systemd.timer
. Navigieren Sie zum Abschnitt "OPTIONEN", um Optionen für Genauigkeit, Persistenz und Ausführung nach dem Start zu finden.
Den Timer laufen lassen
Aktivieren Sie jeden Timer, den Sie mit der Syntax systemctl enable
und systemctl start
.
sudo systemctl enabledns.timer sudo systemctl starten duckdns.timer
Schauen Sie noch einmal auf systemctl list-timers
, um Ihren Timer in Aktion zu sehen.
Sie können sehen, ob Ihr Timer wie erwartet ausgeführt wurde, indem Sie die entsprechende Servicedatei mit dem systemctl status
. In diesem Fall können Sie sehen, dass mein Timer um 11:43:00 lief, wie es sollte.
Fazit
Obwohl viele Programme von Drittanbietern, einschließlich DuckDNS, Skripte enthalten, mit denen sie bei Bedarf aktualisiert werden können, ist das Erstellen von Timern in Systemd hilfreich. Meine Erstellung eines Timers für DuckDNS hier war unnötig, aber es zeigt, wie andere Arten von Systemd-Timern funktionieren würden.
Dieses Wissen wird zum Beispiel für das Erstellen und Ausführen eigener Bash-Skripte hilfreich sein. Sie können es sogar verwenden, um einen vorhandenen Timer so zu ändern, dass er Ihren Vorlieben besser entspricht. Darüber hinaus ist es immer gut zu wissen, wie Ihr Computer arbeitet, und da Systemd viele grundlegende Funktionen steuert, können Sie mit diesem einen Teil des Puzzles besser verstehen, wie Ereignisse jeden Tag ausgelöst werden.
Danke fürs Mitmachen. Viel Glück beim Erstellen Ihrer eigenen Timer.