Ich möchte ein Backup-Skript 10 Minuten nach dem Booten meines Rechners ausführen, aber nur einmal am Tag. Ist es möglich, solche Szenarien mit systemd aufzubauen?
Ich verstehe Ihre Anforderungen nicht ganz, bitte klären Sie. Ich verstehe, dass das Skript nur nach dem ersten Neustart ausgeführt werden sollte, wenn Sie Ihren Computer mehrmals am Tag neu starten. Ist das richtig? Wenn Ihr Computer länger als einen Tag ausgeführt wird, sollte das Skript an aufeinander folgenden Tagen ausgeführt werden?
Krzysztof Adamski
Genau. Ich werde jeden Tag ein Backup erstellen, egal wie oft ich meinen PC neu starte.
Fu86
5
Wenn Sie nicht an systemd aufgehängt sind, ist dies genau das, wofür anacron gedacht ist.
Gilles 'SO- hör auf böse zu sein'
Ich kann mich irren, aber es gibt keine einfache Möglichkeit, anacron so einzustellen, dass es das Skript nur 10 Minuten nach Abschluss des Startvorgangs ausführt.
Krzysztof Adamski
Das ist richtig. Aus diesem Grund benutze ich derzeit Anacron und die guten Alten von, mit einem täglichen Job wieecho "obnam backup" | at "now + 10 minutes"
Dadurch wird die entsprechende .serviceDatei 15 Minuten nach dem Start und dann jeden Tag ausgeführt, während das System in Betrieb ist. Wenn Sie mehrmals am selben Tag neu starten, können Sie das Sicherungsskript einfach die Uhrzeit des Archivs überprüfen lassen und die Ausführung überspringen, wenn es weniger als einen Tag alt ist.
Ich denke nicht, dass es möglich ist, dies vollständig in systemd zu tun, da es keinen Status zwischen Neustarts verfolgt. Sie können einfach planen, dass etwas 10 Minuten nach dem Booten ausgeführt wird, indem Sie systemd.timerund OnBootSec=oder verwenden OnStartupSec=.
Das Skript selbst muss prüfen, ob es heute bereits ausgeführt wurde oder nicht. Dies kann auch in bash problemlos implementiert werden, zum Beispiel:
Anscheinend wird dieses Problem in zukünftigen Versionen behoben. Zumindest laut dieser E-Mail auf der systemd-devel Mailingliste. Bis dahin muss man den hackigen Weg gehen, den Krzysztof vorgeschlagen hat.
echo "obnam backup" | at "now + 10 minutes"
Antworten:
Siehe
/lib/systemd/system/systemd-tmpfiles-clean.timer
:Dadurch wird die entsprechende
.service
Datei 15 Minuten nach dem Start und dann jeden Tag ausgeführt, während das System in Betrieb ist. Wenn Sie mehrmals am selben Tag neu starten, können Sie das Sicherungsskript einfach die Uhrzeit des Archivs überprüfen lassen und die Ausführung überspringen, wenn es weniger als einen Tag alt ist.Auch wenn Ihre Backups schwer mit E / A zu tun haben , kann es hilfreich sein, die IOScheduling * -Anweisungen in der Manpage systemd.exec (5) zu lesen .
quelle
Ich denke nicht, dass es möglich ist, dies vollständig in systemd zu tun, da es keinen Status zwischen Neustarts verfolgt. Sie können einfach planen, dass etwas 10 Minuten nach dem Booten ausgeführt wird, indem Sie
systemd.timer
undOnBootSec=
oder verwendenOnStartupSec=
.Das Skript selbst muss prüfen, ob es heute bereits ausgeführt wurde oder nicht. Dies kann auch in bash problemlos implementiert werden, zum Beispiel:
quelle
Wenn Sie 10 Minuten nach dem Booten nicht aufgelegt haben, können Sie:
OnCalendar=daily
Lässt es alle MitternachtPersisten=true
beim Booten laufen, wenn mindestens ein Lauf verpasst wurde.quelle
Anscheinend wird dieses Problem in zukünftigen Versionen behoben. Zumindest laut dieser E-Mail auf der systemd-devel Mailingliste. Bis dahin muss man den hackigen Weg gehen, den Krzysztof vorgeschlagen hat.
quelle