Verwendung von Crontab zur Automatisierung sich wiederholender Aufgaben unter Linux
Nutzen Sie den Befehl crontab Linux, um verschiedene alltägliche und sich wiederholende Aufgaben zu automatisieren und Ihr Leben zu vereinfachen. Dieses hervorragende und benutzerfreundliche Tool kann in Kombination mit einigen Skripten nicht nur alle Arten von Aufgaben automatisieren, sondern auch dazu beitragen, einfache menschliche Fehler oder Vergesslichkeit zu vermeiden.
Hier erfahren Sie, was Crontab ist, wie Sie automatisierte Jobs hinzufügen und einige Beispiele aus der Praxis.
Was ist Crontab?
Crontab ist ein Daemon-Prozess, der auf fast allen Linux-Computern im Hintergrund ausgeführt wird und zum Planen und Ausführen automatisierter Aufgaben in festgelegten Zeitintervallen verwendet wird. Es wird auch häufig von Softwareentwicklern verwendet, um zeitaufwändige Aufgaben im Hintergrund auszuführen.
Dies kann alles sein, einschließlich, aber nicht beschränkt auf das Senden von Batch-E-Mails, das Überprüfen Ihres Twitter-Feeds, das Durchführen von Backups oder einfach das Durchführen einer Erinnerung.
Grundlegende Crontab-Befehle
Jeder Linux-Benutzer auf dem Computer verfügt über eine eigene Crontab-Datei, die seine aktiven Crontab-Jobs enthält. Hier sind einige grundlegende Terminalbefehle, mit denen Sie die crontab-Datei anzeigen und ändern können:
- crontab-l — Listet alle crontab-Jobs auf.
- crontab -e — Bearbeiten Sie die crontab-Datei.
- crontab -r — Entfernen Sie alle Einträge aus der crontab-Datei.
Die obigen Befehle gelten für die Crontab-Datei des aktuellen Benutzers . Wenn Sie die Crontab-Datei eines anderen Benutzers ändern müssen, verwenden Sie einfach die Option -u . Sie können beispielsweise die crontab-Datei des jdoe- Benutzers mit dem folgenden Befehl bearbeiten:
sudo crontab -ujdoe -e
Format von Crontab-Jobs
Jeder Crontab-Job besteht aus einer Zeile und ist wie folgt formatiert:
MINUTE HOUR DAY MONTH WEEKDAY COMMAND
In der folgenden Tabelle werden die verschiedenen Elemente des Crontab-Jobs erläutert:
Element | Ranage | Beschreibung |
---|---|---|
Minute | 0 – 59 | Die Minute, um den Crontab-Job um auszuführen. |
Stunde | 0 – 23 | Die Stunde, um die der Crontab-Job ausgeführt werden soll. |
Tag | 1 – 31 | Der Tag des Monats, an dem der Crontab-Job ausgeführt werden soll. |
Monat | 1 – 12 | Der Monat, in dem der Crontab-Job ausgeführt werden soll. |
Wochentag | 0 – 6 | Der Wochentag, an dem der Crontab-Job ausgeführt werden soll. |
Befehl | Jeder Linux-Befehl, den Sie auf dem Terminal ausführen können. |
Sie können in jedem der Felder ein Sternchen (*) verwenden, um einen Platzhalter zu kennzeichnen. Dies bedeutet, dass der Crontab-Job unabhängig von diesem Zeitraum ausgeführt wird. Zum Beispiel wird der folgende Crontab-Job jede Nacht genau um 3:20 Uhr ausgeführt:
20 3 * * * /root/backup.sh
Mehrere Werte
Jeder Zeitraum kann auch mehrere Elemente enthalten. Sie können die genauen Werte angeben, indem Sie sie durch ein Komma trennen. Der folgende Crontab-Job wird stündlich 20 und 50 Minuten nach der vollen Stunde ausgeführt:
20,50 * * * * /path/to/command.sh
Wenn Sie den Crontab-Job jedoch in bestimmten Intervallen innerhalb eines bestimmten Zeitraums ausführen möchten, können Sie * / PERIOD verwenden . Der folgende Crontab-Job wird automatisch alle drei Stunden um 15 Minuten nach der vollen Stunde ausgeführt:
15 */3 * * * /path/to/command.sh
Crontab Jobs ruhig halten
Abhängig davon möchten Sie möglicherweise alle Ausgaben der Crontab-Jobs entfernen, damit sie nicht im E-Mail-Ordner Ihres Systems landen. Sie können dies tun, indem Sie > / dev / null 2> & 1 an einen beliebigen Crontab-Job anhängen. Zum Beispiel:
0 6 15 * * /path/to/backup.sh > /dev/null 2>&1
Hinzufügen von Crontab-Jobs
Im Allgemeinen ist der Befehl crontab -e die am häufigsten verwendete Methode zum Hinzufügen oder Ändern von Crontab-Jobs. Führen Sie diesen Befehl im Terminal aus:
crontab -e
Dadurch wird ein Texteditor wie nano mit dem Inhalt Ihrer crontab-Datei geöffnet. Jeder Crontab-Job befindet sich in einer Zeile, und Sie können nach Bedarf Zeilen hinzufügen, ändern und entfernen. Speichern und schließen Sie die Datei, indem Sie Strg + W drücken, gefolgt von den Tasten Y und Enter , wodurch alle Crontab-Jobs in der Datei sofort aktiviert werden.
Verknüpfung zum Hinzufügen von Jobs
Anstatt die crontab-Datei manuell zu ändern, können Sie einen einzelnen Befehl ausführen, um einen Job hinzuzufügen. Wenn Sie beispielsweise diesen Crontab-Job hinzufügen möchten, der jeden Sonntag um 14:00 Uhr ausgeführt wird:
0 14 * * 0 /path/to/command.sh
Sie können den Job mit dem einzigen Befehl zu Ihrer crontab-Datei hinzufügen:
(crontab -l; echo "0 14 * * 0 /path/to/command.sh";) | crontab
Der obige Befehl listet einfach alle Jobs auf, die sich derzeit in Ihrer crontab-Datei befinden, druckt den neuen Job und leitet alles an crontab weiter, wobei dessen Inhalt ersetzt wird.
Crontab-Datei auflisten / entfernen
Sie können alle derzeit in Ihrer Crontab-Datei aktiven Jobs mit dem folgenden Befehl auflisten:
crontab -l
Sie können auch alle Crontab-Jobs entfernen und den Inhalt Ihrer Crontab-Datei mit dem folgenden Befehl leeren:
crontab -r
Beispiel: Sounds abspielen!
Benötigen Sie während der Arbeit alle zwei Stunden eine kurze Erinnerung, damit Sie wissen, dass die Zeit vergangen ist? Holen Sie sich Ihren Lieblings-Audioclip in fast jedem Format (.wav, .mp4, alles) und lassen Sie ihn automatisch mit dem Crontab-Job abspielen , wenn er beispielsweise unter /home/myuser/myalert.wav gespeichert ist:
0 */2 * * * aplay /home/myuser/myalert.wav
Wie wäre es, wenn Sie einen schönen Abschied von der Arbeit der Woche geben und Ihr Lieblingslied jeden Freitagnachmittag automatisch um 17:00 Uhr spielt? Holen Sie sich Ihren Lieblingssong-Clip, und wenn Sie ihn unter /home/myuser/friday_song.mp4 speichern, fügen Sie den Crontab-Job hinzu:
0 17 * * 5 aplay /home/myuser/friday_song.mp4
Beispiel: Sicherungsdateien mit Rsync
Eine der vielen hervorragenden Anwendungen von crontab ist die Möglichkeit, Ihre Dateien automatisch auf einem Remote-Server zu sichern. Reduzieren Sie mit diesem hervorragenden rsync-Tutorial das Risiko, jemals wieder wichtige Daten zu verlieren.
Beispiel: Überprüfen Sie, ob Websites online sind
Vielleicht möchten Sie alle fünf Minuten automatisch überprüfen, ob verschiedene Websites online sind oder nicht, und per E-Mail benachrichtigt werden, wenn eine nicht verfügbar ist. Hier ist ein hübsches kleines PHP-Skript, das genau das tut.
<?php
// E-mail address to notify of sites down
$email = '[email protected]';
// Define URLs to check
$urls = [
'https://apexpl.io',
'https://google.com',
'https://some-junk-site-that-will-hopefully-never-exist.com'
];
// Go through URLs
$down = [];
foreach ($urls as $url) {
// Check URL
$status = check_url($url);
if ($status != 200) {
$down[] = $url;
}
}
// Send e-mail if we have down sites
if (count($down) > 0) {
mail($email, "Urgent - Sites Down!", "Your bot has detected the following sites are currently down:
" . implode("
", $down));
}
// Exit
exit(0);
/**
* Check URL
*/
function check_url(string $url):int
{
// Send via cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
// Get status, and close connection
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Return
return $status;
}
Ändern Sie einfach die E-Mail-Adresse und die gewünschten URLs, um sie oben in der Datei zu überprüfen, und speichern Sie sie an einem Ort wie /home/myuser/check_sites.php . Fügen Sie den crontab-Job hinzu, damit dieses Skript alle fünf Minuten ausgeführt wird und Sie per E-Mail über ausgefallene Websites benachrichtigt werden:
*/5 * * * * /usr/bin/php /home/myuser/check_sites.php > /dev/null 2>&1
Automatisieren Sie Ihr Leben!
Mit diesem Artikel haben Sie hoffentlich die Automatisierungsleistung von Crontab verstanden und erfahren, wie Sie damit viele der alltäglichen und sich wiederholenden Aufgaben in Ihrem Leben automatisieren können.
Sie haben erfahren, was Crontab ist, über die Crontab-Datei, wie Crontab-Jobs formatiert werden und einige Beispiele aus der Praxis, wie sie verwendet werden können.