So fügen Sie programmgesteuert eine neue Crontab-Datei hinzu, ohne die vorherige zu ersetzen

So fügen Sie programmgesteuert eine neue Crontab-Datei hinzu, ohne die vorherige zu ersetzen

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 -eund 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 -lin 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 crontabmit 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 -eist eigentlich eine Datei, in der Sie alle Ihre Cronjobs auflisten.

Wenn Sie tippen, crontab -eerhalten 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.

verwandte Informationen