[Erledigt] Kann anacron cron-jobs nachholen?

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
buhtz
Beiträge: 1106
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

[Erledigt] Kann anacron cron-jobs nachholen?

Beitrag von buhtz » 07.08.2023 20:57:07

Ein User berichtet von einem Verhalten, dass ich bei mir nicht nachvollziehen kann. Es ist dennoch gut möglich, dass ich hier aber an meinen begrenzten Kenntnissen zu cron und anacron scheitere.

Gegeben sei täglicher cron-job (crontab -e) um 13:00

Code: Alles auswählen

0 13 * * * mycommand
Der läuft nur, wenn die Maschine um 13 Uhr auch hochgefahren ist. Cron holt das nicht nach, wenn die Kiste zu der Uhrzeit ausgeschaltet war.

Kann man anacron so konfigurieren, dass solche Jobs trotzdem (beim nächsten Hochfahren) nachgeholt werden? Mit "solche Jobs" meine ich explizit die Zeile in der User-crontab. Das ich so einen Job auch in /etc/cron.daily reinlegen könnte meine ich nicht.

Meine These ist, dass ist so nicht möglich, ohne die crontab Zeile woanders hinzuschieben.
Zuletzt geändert von buhtz am 08.08.2023 11:03:17, insgesamt 1-mal geändert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

tobo
Beiträge: 1996
Registriert: 10.12.2008 10:51:41

Re: Kann anacron cron-jobs nachholen?

Beitrag von tobo » 07.08.2023 22:05:43

buhtz hat geschrieben: ↑ zum Beitrag ↑
07.08.2023 20:57:07
Kann man anacron so konfigurieren, dass solche Jobs trotzdem (beim nächsten Hochfahren) nachgeholt werden? Mit "solche Jobs" meine ich explizit die Zeile in der User-crontab. Das ich so einen Job auch in /etc/cron.daily reinlegen könnte meine ich nicht.
Glaube ich nicht. Ich glaube nicht mal, dass anacron das

Code: Alles auswählen

0 13 * * * mycommand
versteht. Und wenn doch, dann müsste es im syslog (oder systemd-entsprechend) schauen, ob der Job gelaufen ist und dann eine undokumentierte Funktion bereitstellen, die das nachträgliche Abarbeiten eines fremden Jobs ermöglicht...

DeletedUser_sxWn4

Re: Kann anacron cron-jobs nachholen?

Beitrag von DeletedUser_sxWn4 » 07.08.2023 23:09:38

Auch nach meiner Einschätzung wird das nix (oder zumidest nix gescheites) mit 'anacron'. Fürs ausführen von tasks zu einem bestimmten Zeitpunkt ist es einfach nicht gemacht, vgl. die manpages zu 'anacron'.
Evtl kriegst Du's aber mit einer systemd service-unit und zugehöriger timer-unit hin. Die für anacron-ähnliches Verhalten relevanten Einträge sind mE 'OnCalendar=' und 'Persistent=true', wobei 'OnCalendar' eben auch relativ komplexe Zeitangaben verdaut und so _könnte_ es dann klappen.

Siehe auch: https://wiki.ubuntuusers.de/systemd/Timer_Units/

Wenn die units nicht für root sondern einen Nutzer gedacht sind, verwendet man immer 'systemctl --user' anstatt nur 'systemctl'. Das wars dann leider auch schon von meiner Seite. systemd-units kann ich leider nicht so recht supporten (zumindest nicht in endlicher Zeit).

joka63
Beiträge: 24
Registriert: 20.07.2023 23:18:50

Re: Kann anacron cron-jobs nachholen?

Beitrag von joka63 » 07.08.2023 23:51:13

Meines Wissens ignoriert Anacron den Inhalt der /etc/crontab. Wer Anacron nutzen will, muss seine Jobs in die /etc/anacrontab (oder /etc/cron.daily etc.) eintragen.

Da es sich wohl um ein Back-In-Time Problem handelt, müsste man nachstellen oder nachfragen, wie der User Back-In-Time konfiguriert hat und wie das in Back-In-Time in der fraglichen Debian-Version umgesetzt wird.

Laut https://wiki.ubuntuusers.de/Back_In_Time/ gibt es wohl Probleme im Zusammenspiel mit Anacron und auch Unterschiede zwischen verschiedenen Versionen von Back-In-Time.
Zotac ZBox ID91: Debian 12 mit GNOME
Geekom Mini IT11: Fedora 38 Silverblue (GNOME)

tobo
Beiträge: 1996
Registriert: 10.12.2008 10:51:41

Re: Kann anacron cron-jobs nachholen?

Beitrag von tobo » 08.08.2023 00:07:47

Die Frage war ja, ob man das in Anacron so konfigurieren kann. Von den bekannten Einstellungen her nein und von der Logik her auch nein - wenn Cron seine eigenen Jobs nicht nachholen kann, warum sollte Anacron das dann bei Cron-Jobs können? Das heißt aber nicht, dass man nicht ein Skript schreiben könnte, welches den bereits skizzierten Weg geht, damit es dann doch funktioniert. Aber das ist ja - so wie ich das verstehe - nicht die Frage...

DeletedUser_sxWn4

Re: Kann anacron cron-jobs nachholen?

Beitrag von DeletedUser_sxWn4 » 08.08.2023 00:43:59

tobo, meinst Du es in etwa so:

Der job in der crontab bleibt. Man startet noch ein weiteres script, z.B. in der crontab mit @reboot. Das script schaut dann auf die Uhr: aha 16:00, wurde der Job gemacht? Nein, na dann machs ich halt jetzt. Klar, da müssen noch mehr checks rein ('gestern'...), aber die Idee gefällt mir recht gut.
Jedenfalls viel besser als rumfrickeln mit einer systemd-unit, das habe ich ein paarmal gemacht. Und auch hingekriegt, trotzdem: au-au-auweia!

Eine systemd-unit mit timer wird es schon schaukeln, da bin ich mir inzwischen relativ sicher. Aber dafür braucht es eben sagenhaft viel Zeit oder auskunftswillige Eingeweihte. Und letztere sind leider sehr selten.

Vielleicht sollten wir erstmal warten, bis sich der TE nochmal meldet und ggf. präzisiert.

(edit: dummen Scherz entfernt, und dann noch einen Tippfehler)

tobo
Beiträge: 1996
Registriert: 10.12.2008 10:51:41

Re: Kann anacron cron-jobs nachholen?

Beitrag von tobo » 08.08.2023 01:41:12

Ja, irgend sowas in der Art wäre die andere Auslegung der Frage. Ich bin da aber nicht so begeistert davon. Alternativ könnte man sich selbst an Anacron orientieren, in dem man ein Cron-Skript z.B. alle 15 Minuten startet und das bei Abarbeitung eine Datei einzig mit dem Zeitstempel aktualisiert. Dann ist die erste Aktion im Skript, ist es >=13 Uhr und ist der Zeitstempel in der Datei nicht von heute. Wenn ja, führe den Rest des Skripts aus; wenn nein, dann exit. Das häufige Starten am Tag ist unerheblich, 15 Minuten könnte man noch deutlich reduzieren, falls nötig.

DeletedUser_sxWn4

Re: Kann anacron cron-jobs nachholen?

Beitrag von DeletedUser_sxWn4 » 08.08.2023 02:18:10

Hmmm, ich als Tüpfelshicer hätte jetzt eher auf @reboot als alle 15min gesetzt. Das spart cron-starterei.

Und dann schauen: <13? Ja? Ist der Job von gestern gemacht? Passt, heute wirds cron dann schon noch machen, wenn nicht bin ich beim nächsten reboot (sofern >13) dran, also exit. Job gestern nicht gemacht? Dann machs jetzt ich, ggf. Zeitstempel irgendwohin, exit. Vorgestern? Und Vorvorgestern usw.? Da wirds dann vielleicht doch ziemlich frickelig.
>13. quasi genauso, nur 'heute' muss das script dann auch noch übernehmen.

Puh, die Uhrzeit und der Alkpegel!! D.h. ich habs jetzt nicht zuende gedacht, aber ich würde sagen: Professionell, aber eben am anspruchvollsten: systemd. Wenn aber eine tagesaktuelle Zeit-Abfrage reicht und nicht noch die Woche, in der der Rechner still stand, gemanagt werden soll (würde das den überhaupt Sinn machen?), dann würde ich persönlich stark zu Deinem Lösungsvorschlag tendieren.

'buhtz' meldet sich nicht, hoffentlich haben wir ihn nicht verschreckt...

buhtz
Beiträge: 1106
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: Kann anacron cron-jobs nachholen?

Beitrag von buhtz » 08.08.2023 11:03:08

Danke für eure Hinweise. Ihr Bestätigt meine Annahme, dass das beschriebenen Verhalten so out-of-the-box nicht möglich ist und der betroffene User vermutlich irgendetwas explizit konfiguriert oder gebastelt haben muss, ohne sich heute noch daran zu erinnern.

Ich war bei meiner Annahme nur unsicher, weil cron/anacron ein für mich schwer zu durchdringendes Konstrukt ist. Aber scheinbar hab ich es ja diesmal doch richtig verstanden.

Meine Frage hat sich also soweit erledigt. Vielen Dank.

Der Hintergrund meiner Frage, war der initial verlinkte BugReport zu Back In Time (BIT). Dort meint der User, dass BIT unter Debian 11 seine "Every Day" jobs auch bei jedem Hochfahren ausführen würde. Das kann BIT m.W. so aber gar nicht, weil "Every Day" immer in einer 0 13 * * * cmd (oder andere Uhrzeit) Zeile resultiert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Antworten