
Ich habe ein paar Aufgaben, die ich gerne regelmäßig ausführe:
- Alle Git-Repositories pushen (5-mal täglich)
- Führen Sie einen Virenscan für Dateien durch (alle 90 Tage)
- Backup vom Server herunterladen (einmal täglich)
Für all diese Aufgaben habe ich ein Skript. Um diese zu orchestrieren, habe ich ein Skript namens geschrieben, maintenance
das Teil meinesWartungsprojekt. Deraktuelle Version des Skripts.
Es verfügt über eine JSON-Konfigurationsdatei für die Aufgaben:
"git-autopush": {
"disk": true,
"internet": true,
"interval": 0.3,
"local": false
},
Ich möchte mein Skript durch einen vorhandenen Taskplaner ersetzen, da ich die Anzahl der benutzerdefinierten Software auf meinem System reduzieren möchte. Ich habe jedoch die folgenden Anforderungen:
- Nicht im Batteriebetrieb ausführen.
- Geben Sie einen sichtbaren Status an. Das könnte
kdialog
sogar durchgehen. - Führen Sie jeweils nur eine datenträgerintensive Aufgabe aus.
Das maintenance
Skript kümmert sich darum und ich kann es ausführen, wann immer ich genügend Zeit habe, die Aufgaben auszuführen. Wenn nicht, kann ich einfach alle Aufgaben abbrechen und später neu starten.
Ein einfacher Cron wäre nicht gut, da er nicht funktionieren würde, wenn mein Computer ausgeschaltet ist. Anacron wäre vielleicht besser, aber ich gehe davon aus, dass es alle Aufgaben direkt nach dem Booten ausführen würde. Und wenn ich meine Festplatte zufällig für eine virtuelle Maschine brauche, wie würde ich dem Scheduler sagen, dass er anhalten soll?
Gibt es da draußen bereits ein anderes Programm oder soll ich einfach mein eigenes weiterverwenden?
Antwort1
Wenn ich meine Festplatte zufällig für eine virtuelle Maschine benötige, wie weise ich den Scheduler an, anzuhalten?
Cron und Anacron sind (normalerweise) Daemon-Dienste. Sie können sie wie jeden anderen Dienst stoppen und starten.
cron wäre nicht gut, da es nicht funktionieren würde, wenn mein Computer ausgeschaltet ist
Das ist ein ziemlich schwieriges Kriterium. Was soll die Software tun, während der Computer ausgeschaltet ist?
Anacron wäre vielleicht besser, aber ich gehe davon aus, dass es alle Aufgaben direkt nach dem Booten ausführen würde.
Offenbar schon. Aber hier ist eine Idee:Starten und Stoppen anacron
mit cron
.
Führen Sie jeweils nur eine datenträgerintensive Aufgabe aus
Anacron bietet diese Option:
-s
Serialisiert die Ausführung von Jobs. Anacron startet keinen neuen Job, bevor der vorherige beendet ist.
Jetzt müssen Sie nur noch diese beiden implementieren:
- Nicht im Batteriebetrieb ausführen.
- Stellen Sie einen sichtbaren Status bereit. Dies könnte sogar über KDialog erfolgen.
Das erste könnte dadurch erreicht werden, dass Cron den Batteriestatus überprüft, bevor es Anacron startet. Das zweite könnte auf viele verschiedene Arten erreicht werden; Sie haben bereits selbst eine vorgeschlagen.