Erstellung fortgeschrittenerer Cron-Jobs
Nachdem Sie die Grundlagen verstanden haben, erstellen wir nun einen fortgeschritteneren Cron-Job, der Systeminformationen protokolliert.
Erstellen wir einen Cron-Job, der die Informationen über die Speicherauslastung des Systems stündlich protokolliert. Diese Art der Überwachung kann nützlich sein, um die Systemleistung im Laufe der Zeit zu verfolgen.
Zunächst erstellen wir ein Shell-Skript, das die Speicherinformationen sammelt:
nano ~/project/memory_check.sh
Fügen Sie im nano-Editor folgenden Inhalt hinzu:
#!/bin/bash
echo "Memory check at $(date)" >> ~/project/memory_log.txt
free -m >> ~/project/memory_log.txt
echo "--------------------" >> ~/project/memory_log.txt
Dieses Skript wird:
- Einen Zeitstempel in das Protokoll einfügen
- Den Befehl
free -m
ausführen, um die Speicherauslastung in Megabyte anzuzeigen
- Eine Trennlinie für bessere Lesbarkeit hinzufügen
Speichern Sie die Datei und verlassen Sie den Editor (drücken Sie Ctrl+O
, Enter
, dann Ctrl+X
).
Machen Sie nun das Skript ausführbar:
chmod +x ~/project/memory_check.sh
Sie können das Skript testen, um sicherzustellen, dass es korrekt funktioniert:
~/project/memory_check.sh
Überprüfen Sie die Ausgabedatei:
cat ~/project/memory_log.txt
Sie sollten eine Ausgabe sehen, die den Zeitstempel, die Speicherauslastungsinformationen und eine Trennlinie enthält.
Planen wir nun, dass dieses Skript stündlich mit Crontab ausgeführt wird:
crontab -e
Fügen Sie die folgende Zeile hinzu (behalten Sie dabei Ihren bestehenden Cron-Job):
0 * * * * ~/project/memory_check.sh
Dies führt das Skript zur Speicherüberprüfung am Anfang jeder Stunde aus. Speichern Sie die Datei und verlassen Sie den Editor.
Um zu überprüfen, ob der neue Cron-Job hinzugefügt wurde:
crontab -l
Sie sollten beide Cron-Jobs sehen:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
Verwendung spezieller Zeitangaben
Cron unterstützt auch einige spezielle Zeitangaben für häufige Planungsmuster:
@hourly
- Entspricht 0 * * * *
@daily
- Entspricht 0 0 * * *
@weekly
- Entspricht 0 0 * * 0
@monthly
- Entspricht 0 0 1 * *
@reboot
- Wird beim Systemstart ausgeführt
Fügen wir einen Job hinzu, der täglich mit diesen speziellen Zeitangaben ausgeführt wird:
crontab -e
Fügen Sie die folgende Zeile hinzu:
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
Speichern Sie die Datei und verlassen Sie den Editor. Dies erstellt einmal pro Tag um Mitternacht einen neuen Eintrag in der Datei daily_check.txt
.
Um zu überprüfen, ob der neue Cron-Job hinzugefügt wurde:
crontab -l
Sie sollten nun alle drei Cron-Jobs sehen:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
Verwaltung der Cron-Job-Ausgabe
Standardmäßig sendet Cron alle Ausgaben von Jobs an die E-Mail des Benutzers. Wenn Sie die Ausgabe vollständig verwerfen möchten, können Sie sie auf /dev/null
umleiten:
*/10 * * * * ~/project/some_script.sh > /dev/null 2>&1
Dies ist eine gängige Praxis für Skripte, deren Ausgabe Sie nicht behalten müssen.