
Ich arbeite an einem kleinen Heimautomatisierungsprojekt mit Raspberry Pi (Betriebssystem: Raspbian).
Ich möchte wissen, wie ich mit dem Python-Crontab-Modul mehr als eine Crontab-Datei hinzufügen kann, ohne die vorherigen Einträge zu ersetzen crontab -e
?
Ich möchte programmgesteuert (ohne die Dateien dort manuell aufzurufen crontab -e
und hinzuzufügen) zwei Python-Skripte planen – das erste Skript wird alle 5 Minuten ausgeführt und das andere alle 2 Minuten.
Ich konnte das erste Skript erfolgreich mit dem Python-Crontab-Modul planen, aber als ich das zweite Skript plante, ersetzte es das erste crontab -e
. Wie kann ich also die neue Crontab-Datei planen, ohne die vorherige zu ersetzen?
Wenn es eine andere Möglichkeit zur Crontab-Planung gibt, machen Sie bitte einen Vorschlag mit Beispielcode :)
Hinweis: Ich möchte Python-Skripte in Crontab nur mithilfe von Python-Skripten planen und die Dateien nicht manuell hinzufügen crontab -e
.
Antwort1
Wenn Sie ein Skript zum Hinzufügen von Einträgen in cron schreiben möchten (ohne den Texteditor über zu verwenden crontab -e
), sähe das etwa so aus:
crontab -l
in eine temporäre Datei ausführen- Überprüfen Sie, ob Ihr neuester Befehl bereits in der Datei enthalten ist. Wenn ja, beenden Sie die Aktion.
- den neuesten Befehl an die temporäre Datei anhängen
- Ausführen
crontab
mit der temporären Datei als Parameter, um die geplanten Befehle zu ersetzen
Als Referenz:
- crontab(1)- Crontab-Dateien für einzelne Benutzer verwalten
- crontab(5)- Tabellen zum Steuern von Cron
Antwort2
Da es sich bei Crontabs letztlich um Textdateien handelt, warum wird dann nicht einfach Text angehängt?
with open("/var/spool/cron/crontabs/john", "a") as ctfile:
ctfile.write("1 0 * * 3 /path/to/newcommand --option")
Antwort3
crontab -e
ist eigentlich eine Datei, in der Sie alle Ihre Cronjobs auflisten.
Wenn Sie tippen, crontab -e
erhalten Sie eine Liste vorheriger Cronjobs und Tildas ( ~
).
Drücken Sie die Einfügen-Taste auf Ihrer Tastatur, um zwischen den Modi zu wechseln, und drücken Sie am Ende Ihres letzten Cronjobs die Eingabetaste.
Dadurch wird die Tilda gelöscht und Sie können Ihren neuen Cronjob hier schreiben.
Um den Einfügemodus zu verlassen, drücken Sie die ESC-Taste und die Eingabetaste, :wq!
um die Änderungen zu speichern.