In diesem Lernprogramm erfahren Sie, wie wichtig Cron-Jobs sind und warum Sie sie benötigen. Sie werden einen Blick darauf werfen Python-Crontab
, ein Python-Modul, mit dem Sie interagieren können Crontab
. Sie lernen, wie man Cron-Jobs in einem Python-Programm mit Hilfe von Python-Crontab
Modul.
Während der Systemadministration müssen Hintergrundjobs auf einem Server ausgeführt werden, um Routineaufgaben auszuführen. Cron ist ein Systemprozess, mit dem Hintergrundaufgaben routinemäßig ausgeführt werden. Cron benötigt eine Datei namens Crontab
enthält die Liste der Aufgaben, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen. Alle diese Jobs werden zur angegebenen Zeit im Hintergrund ausgeführt.
Um Cron-Jobs anzuzeigen, die auf Ihrem System ausgeführt werden, navigieren Sie zu Ihrem Terminal und geben Sie Folgendes ein:
Crontab -l
Der obige Befehl zeigt die Liste der Jobs an Crontab
Datei. Hinzufügen eines neuen Cron-Jobs zum Crontab
, eintippen:
Crontab -e
Der obige Befehl zeigt die Crontab
Datei, in der Sie einen Job planen können. Angenommen, Sie haben eine Datei aufgerufen hallo.py
was aussieht wie:
print "Hallo Welt"
Um nun einen Cron-Job zu planen, um das obige Skript zur Ausgabe in eine andere Datei auszuführen, müssen Sie die folgende Codezeile hinzufügen:
50 19 * * * python hallo.py >> a.txt
In der obigen Codezeile wird die Ausführung der Datei mit der Ausgabe in einer aufgerufenen Datei geplant a.txt
. Die Zahlen vor dem auszuführenden Befehl definieren die Ausführungszeit des Jobs. Die Timing-Syntax besteht aus fünf Teilen:
Sternchen (*) in der Timing-Syntax zeigen an, dass es jedes Mal ausgeführt wird.
Python-Crontab
ist ein Python-Modul, das Zugriff auf Cron-Jobs bietet und die Manipulation der Crontab
Datei aus dem Python-Programm. Es automatisiert den Änderungsprozess von Crontab
Datei manuell. Um mit anzufangen Python-Crontab
, Sie müssen das Modul mit pip installieren:
pip install python-crontab
Sobald du hast Python-Crontab
installiert, importieren Sie es in das Python-Programm.
von Crontab importieren CronTab
Lass uns die verwenden Python-Crontab
Modul zum Schreiben unseres ersten Cron-Jobs. Erstellen Sie ein Python-Programm, das aufgerufen wird writeDate.py
. Innerhalb writeDate.py
, Fügen Sie den Code hinzu, um das aktuelle Datum und die aktuelle Uhrzeit in eine Datei zu drucken. Hier ist, wie writeDate.py
würde aussehen:
datetime mit open ('dateInfo.txt', 'a') als outFile importieren: outFile.write ('\ n' + str (datetime.datetime.now ()))
Speichern Sie die obigen Änderungen.
Lassen Sie uns ein anderes Python-Programm erstellen, das die writeDate.py
Python-Programm, das jede Minute ausgeführt werden kann. Erstellen Sie eine Datei mit dem Namen scheduleCron.py
.
Importieren Sie die CronTab
Modul in die scheduleCron.py
Programm.
von Crontab importieren CronTab
Verwendung der CronTab
Modul, lassen Sie uns auf das System zugreifen Crontab
.
my_cron = CronTab (user = 'Ihr Benutzername')
Der obige Befehl erstellt einen Zugriff auf das System Crontab
des Benutzers. Lassen Sie uns die cron-Jobs durchlaufen und Sie sollten in der Lage sein, alle manuell erstellten cron-Jobs für den jeweiligen Benutzernamen anzuzeigen.
für einen Job in my_cron: Druckjob
Speichern Sie die Änderungen und versuchen Sie, das auszuführen scheduleCron.py
und Sie sollten die Liste der Cron-Jobs (falls vorhanden) für den jeweiligen Benutzer haben. Sie sollten in der Lage sein, bei der Ausführung des obigen Programms etwas Ähnliches zu sehen:
50 19 * * * python hello.py >> a.txt # um 5 Uhr morgens jede Woche mit:
Weiter geht es mit dem Erstellen eines neuen Cron-Jobs mit CronTab
Modul. Sie können einen neuen Cron erstellen, indem Sie die neue Methode verwenden und den auszuführenden Befehl angeben.
job = my_cron.new (command = 'python /home/jay/writeDate.py')
Wie Sie in der obigen Codezeile sehen können, habe ich den Befehl angegeben, der ausgeführt werden soll, wenn der Cron-Job ausgeführt wird. Sobald Sie den neuen Cron-Job haben, müssen Sie den Cron-Job planen.
Lassen Sie uns den Cron-Job so planen, dass er jede Minute läuft. In einem Intervall von einer Minute werden das aktuelle Datum und die aktuelle Uhrzeit an das angefügt dateInfo.txt
Datei. Fügen Sie die folgende Codezeile hinzu, um den Job für jede Minute einzuplanen:
job.minute.every (1)
Nachdem Sie den Job eingeplant haben, müssen Sie den Job auf die Cron-Registerkarte schreiben.
my_cron.write ()
Hier ist der scheduleCron.py
Datei:
von crontab importieren CronTab my_cron = CronTab (user = 'roy') job = my_cron.new (command = 'python /home/roy/writeDate.py') job.minute.every (1) my_cron.write ()
Speichern Sie die obigen Änderungen und führen Sie das Python-Programm aus.
python scheduleCron.py
Sobald es ausgeführt wird, überprüfen Sie die Crontab
Datei mit folgendem Befehl:
Crontab -l
Der obige Befehl sollte den neu hinzugefügten Cron-Job anzeigen.
* * * * * Python /home/roy/writeDate.py
Warten Sie eine Minute und überprüfen Sie Ihr Home-Verzeichnis. Jetzt sollten Sie das sehen können dateInfo.txt
Datei mit dem aktuellen Datum und der aktuellen Uhrzeit. Diese Datei wird jede Minute aktualisiert und das aktuelle Datum und die Uhrzeit werden an den vorhandenen Inhalt angehängt.
Um einen vorhandenen Cron-Job zu aktualisieren, müssen Sie den Cron-Job mit dem Befehl oder mit einer ID suchen. Sie können eine ID für einen Cron-Job in Form eines Kommentars festlegen, wenn Sie einen Cron-Job mit erstellen Python-Crontab
. So erstellen Sie einen Cron-Job mit einem Kommentar:
job = my_cron.new (command = 'python /home/roy/writeDate.py', comment = "dateinfo")
Wie in der obigen Codezeile zu sehen ist, wurde ein neuer Cron-Job mit dem Kommentar als erstellt dateinfo
. Der obige Kommentar kann verwendet werden, um den Cron-Job zu finden.
Was Sie tun müssen, durchläuft alle Jobs in Crontab
und überprüfen Sie den Job mit dem Kommentar dateinfo
. Hier ist der Code:
my_cron = CronTab (user = 'roy') für einen Auftrag in my_cron: Druckauftrag
Überprüfen Sie den Kommentar jedes Jobs mit der job.comment
Attribut.
my_cron = CronTab (user = 'jay') für einen Job in my_cron: if job.comment == 'dateinfo': Druckjob
Sobald Sie den Job haben, planen Sie den Cron-Job neu ein und schreiben Sie dem Cron. Hier ist der vollständige Code:
von crontab importieren CronTab my_cron = CronTab (user = 'roy') für einen Job in my_cron: if job.comment == 'dateinfo': job.hour.every (10) my_cron.write () print 'Cron-Job wurde erfolgreich geändert'
Speichern Sie die obigen Änderungen und führen Sie das aus scheduleCron.py
Datei. Listen Sie die Elemente in der Crontab
Datei mit folgendem Befehl:
Crontab -l
Sie sollten in der Lage sein, den Cron-Job mit der aktualisierten Zeitplanung anzuzeigen.
* * / 10 * * * python /home/jay/writeDate.py # dateinfo
Python-Crontab
bietet Methoden zum Löschen oder Entfernen von Jobs an Crontab
. Sie können einen Cron-Job aus dem Ordner entfernen Crontab
basierend auf dem Zeitplan, Kommentar oder Befehl.
Angenommen, Sie möchten den Job mit Kommentar löschen dateinfo
von dem Crontab
. Der Code wäre:
von crontab importieren CronTab my_cron = CronTab (user = 'roy') für einen Job in my_cron, wenn job.comment == 'dateinfo': my_cron.remove (job) my_cron.write ()
Um einen Job anhand eines Kommentars zu entfernen, können Sie auch direkt das aufrufen Löschen
Methode auf der my_cron
ohne jede Wiederholung. Hier ist der Code:
my_cron.remove (comment = 'dateinfo')
Um alle Jobs aus dem Crontab
, Sie können das anrufen alles entfernen
Methode.
my_cron.remove_all ()
Wenn Sie mit den Änderungen fertig sind, schreiben Sie sie mit dem folgenden Befehl in den cron zurück:
my_cron.write ()
So prüfen Sie, wie oft Ihr Job mit ausgeführt wird Python-Crontab
, du kannst den ... benutzen Frequenz
Methode. Sobald Sie den Job haben, können Sie die aufgerufene Methode aufrufen Frequenz
, Gibt an, wie oft der Job in einem Jahr ausgeführt wird.
von crontab importieren CronTab my_cron = CronTab (user = 'roy') für einen Job in my_cron: print job.frequency ()
Um zu überprüfen, wie oft der Job in einer Stunde ausgeführt wird, können Sie die Methode verwenden frequency_per_hour
.
my_cron = CronTab (user = 'roy') für einen Job in my_cron: print job.frequency_per_hour ()
Um die Jobhäufigkeit an einem Tag zu überprüfen, können Sie die Methode verwenden frequency_per_day
.
Python-Crontab
bietet die Funktionalität zum Überprüfen des Zeitplans eines bestimmten Jobs. Damit dies funktioniert, benötigen Sie die Croniter
Modul, das auf Ihrem System installiert werden soll. Installieren Croniter
mit pip:
pip installieren croniter
Sobald du hast Croniter
installiert, rufen Sie die Zeitplanmethode für den Job auf, um den Jobzeitplan abzurufen.
sch = job.schedule (date_from = datetime.datetime.now ())
Jetzt können Sie den nächsten Job-Zeitplan mit der get_next
Methode.
print sch.get_next ()
Hier ist der vollständige Code:
datetime aus crontab importieren import CronTab my_crons = CronTab (user = 'jay') für einen Job in my_crons: sch = job.schedule (date_from = datetime.datetime.now ()) print sch.get_next ()
Sie können sogar den vorherigen Zeitplan mit der get_prev
Methode.
In diesem Lernprogramm haben Sie gesehen, wie Sie mit der Verwendung von beginnen können Python-Crontab
für den Zugriff auf das System Crontab
aus einem Python-Programm. Verwenden Python-Crontab
, Sie können den manuellen Prozess zum Erstellen, Aktualisieren und Planen von Cron-Jobs automatisieren.
Haben Sie ... benutzt Python-Crontab
oder andere Bibliotheken für den Zugriff auf das System Crontab
? Ich würde gerne deine Gedanken hören. Teilen Sie uns Ihre Vorschläge in den Kommentaren mit.
Lernen Sie Python mit unserem kompletten Python-Tutorial, egal ob Sie gerade erst anfangen oder ein erfahrener Programmierer sind, der neue Fähigkeiten erlernen möchte.