staging.inyokaproject.org

anacron läuft - aber kein sichtbares Ergebnis

Status: Ungelöst | Ubuntu-Version: Ubuntu MATE 20.04 (Focal Fossa)
Antworten |

jolexin

Avatar von jolexin

Anmeldungsdatum:
22. Dezember 2009

Beiträge: 325

Ich will (nicht als root, sondern als user unter meiner id) 1 x wöchentlich ein spezielles Shell Skript automatisch ausführen und hab dazu das Kommando anacron gefunden. Das liest sich ganz einfach, doch der anacron-Befehl hat seine Tücken und ich schaffe es nicht, diese zu erkennen und zu überwinden.

Das beigefügte Bild /anacron-config/ zeiigt meine Test-Anordnung.

  1. In der Steuerzentrale habe ich ein zusätzliches Startprogramm ANACRON eingefügt.

  2. Mein Befehl für das zu startende Programm ist: anacron -f -d -t $HOME/bin/anacrontab -S $HOME/bin/spool

  3. In meiner anacrontab steht als Test das date Kommando; dieses soll einfach das aktuelle Datum an eine Datei namens HALLO (auf meinem schreibtisch) anfügen. Damit will ich sehen, ob beim Aufruf von anacron irgend etwas geschieht.

Nachdem ich meinen PC gebootet und mich eingeloggt habe, sollte anacron starten und an meine HALLO Datei eine Zeile anfügen. Das geschieht leider nicht! Es geschieht scheinbar gar nichts.

Anderer Versuch: Ich öffne ein Terminal und führe in einer Befehlszeile meinen anacron-Befehl aus. Nun sehe ich folgende Meldungen:

Anacron 2.3 started on 2020-12-06
Will run job `tgl-Hallo' in 0 min.
Job `tgl-Hallo' started
Job `tgl-Hallo' terminated (exit status: 127) (mailing output)
anacron: Can't find sendmail at /usr/sbin/sendmail, not mailing output
Normal exit (1 job run)

(Frage A) Ich sehe, dass anacron den Zeitstempel in $HOME/bin/spool/tgl-Hallo auf das heutige Datum aktualisiert hat. Doch die HALLO Datei wurde nicht verändert. Warum nicht?

(Frage B) Warum versucht anacron, sendmail aufzurufen? Davon steht nichts in „man anacron“, es gibt auch kein /usr/sbin/sendmail.

Seltsam!

Bearbeitet von rklm:

Aufzählung und Inline-Code

Anhang

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

jolexin schrieb:

Das beigefügte Bild /anacron-config/ zeiigt meine Test-Anordnung.

Leider fehlt der Anhang.

Generell kann man (ana)cron durch systemd/Timer Units ersetzen, die auch in der User-Session laufen können, wenn das gewollt ist.

Anacron 2.3 started on 2020-12-06
Will run job `tgl-Hallo' in 0 min.
Job `tgl-Hallo' started
Job `tgl-Hallo' terminated (exit status: 127) (mailing output)
anacron: Can't find sendmail at /usr/sbin/sendmail, not mailing output
Normal exit (1 job run)

Der Exit-Status 127 deutet darauf hin, dass ein im Skript angegebenes Programm nicht gefunden wurde (vgl. https://www.gnu.org/software/bash/manual/html_node/Exit-Status.html).

(Frage A) Ich sehe, dass anacron den Zeitstempel in $HOME/bin/spool/tgl-Hallo auf das heutige Datum aktualisiert hat. Doch die HALLO Datei wurde nicht verändert. Warum nicht?

Anacron sollte ins Syslog schreiben, eventuell sieht man da schon woran es hängt.

(Frage B) Warum versucht anacron, sendmail aufzurufen? Davon steht nichts in „man anacron“, es gibt auch kein /usr/sbin/sendmail.

In der Manpage zu anacron steht:

If a job generates any output on its standard output or standard error, the output is mailed to the user running Anacron (usually root), or to the address contained by the MAILTO environment variable in the crontab, if such exists.

sendmail kann von einer Reihe von Paketen bereitgestellt werden, z.B. postfix, ssmtp, nullmailer usw.

jolexin

(Themenstarter)
Avatar von jolexin

Anmeldungsdatum:
22. Dezember 2009

Beiträge: 325

also hier der Anhang /anacron-config/

Aus der letzten Anmerkung folgt für mich, dass ich mit anacron so gut wie kein Shellkommando ausführen kann, denn fast jedes schreibt was auf stdout.

???

Anhang

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

jolexin schrieb:

Ich will (nicht als root, sondern als user unter meiner id) 1 x wöchentlich ein spezielles Shell Skript automatisch ausführen und hab dazu das Kommando anacron gefunden. Das liest sich ganz einfach, doch der anacron-Befehl hat seine Tücken und ich schaffe es nicht, diese zu erkennen und zu überwinden.

Da Du schon auf 20.04 bist, würde ich lieber auf die moderneren Systemd-Timer zurückgreifen. Du musst den als "persistent" definieren, dann werden auch Ausführungen nachgeholt, die während der Abschaltung des Rechners dran gewesen wären. Ich persönlich finde das deutlich weniger verwirrend als Anacron.

Nachdem ich meinen PC gebootet und mich eingeloggt habe, sollte anacron starten und an meine HALLO Datei eine Zeile anfügen. Das geschieht leider nicht! Es geschieht scheinbar gar nichts.

Aber es ist ja nicht anacron, der an Deine Datei etwas anhängt, sondern die Befehle, die anacron ggf. ausführt. Und wenn ein Befehl in dieser Woche schon ausgeführt wird, kannst du anacron so oft ausführen, wie Du willst, da passiert dann vor nächster Woche nix.

(Frage A) Ich sehe, dass anacron den Zeitstempel in $HOME/bin/spool/tgl-Hallo auf das heutige Datum aktualisiert hat. Doch die HALLO Datei wurde nicht verändert. Warum nicht?

Ich kenne mich mit Anacron nicht im Detail aus, aber es könnte daran liegen, dass anacron nicht bei jedem Aufruf Arbeit macht. Wann Dein Programm / Script ausgeführt wird, hängt ja von den definierten Intervallen ab.

Eigentlich müsstest Du doch ein Skript in /etc/cron.weekly/ anlegen, das die Arbeit macht. Das könnte z.B. so aussehen:

1
2
3
4
5
#!/bin/sh

[ $(id -un) -eq user123 ] || exec sudo -u user123 "$0" "$@"

date >> ~/HALLO

Dieses Skript kann man als root ausführen und es wechselt dann zum Nutzer user123.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

jolexin schrieb:

Das beigefügte Bild /anacron-config/ zeiigt meine Test-Anordnung.

Hi Jolexin,

Bitte missbrauche Bilder nicht, um Textinformationen zu übermitteln. Man kann Bilder weder in den Editor, noch in die Shell kopieren. Außerdem ist es ein umständlicher Prozess, erst Bilder runterzuladen und zu öffnen und hinterher den Müll wieder zu entsorgen. Hat man dann eine weitere Frage lädt man die Bilder wieder runter.

Kopier den Text, insbes. Code in den Onlineeditor und markiere ihn da als Code.

Was als ergonomisch wünschenswert gut gemeint war entpuppt sich schnell als Hürde.

  1. In der Steuerzentrale habe ich ein zusätzliches Startprogramm ANACRON eingefügt.

  2. Mein Befehl für das zu startende Programm ist: anacron -f -d -t $HOME/bin/anacrontab -S $HOME/bin/spool

  3. In meiner anacrontab steht als Test das date Kommando;

Nein, da steht

1
"date  >>  /$HOME/..."

Die Zahl der Leerstellen kann man bei einem Bild nur erraten - noch ein Argument für ein Bilderverbot. Ist hier wohl irrelevant, aber bist Du sicher, dass da nicht nach "date >> ..." als Programm gesucht wird? Sagt die Dokumentation, man soll/müsse das maskieren?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

user_unknown schrieb:

Kopier den Text, insbes. Code in den Onlineeditor und markiere ihn da als Code.

Ja, unbedingt!

Nein, da steht

1
"date  >>  /$HOME/..."

Wo hast Du das gesehen? Ich kann das im Moment nicht finden mit dem Slash vor "$HOME" - weder hier im Text noch in den beiden Screenshots.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Da siehste, wie schlecht Images sind. ☺

Wohl ein Übertragungsfehler von mir, aber /$HOME und $HOME sollte keinen Unterschied machen. Trotzdem hast Du natürlich recht - /$HOME macht keinen Sinn.

Es ging mir um dass Quoting um Kommando, Umleitung und Parameter "date >> $HOME/...".

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

user_unknown schrieb:

Da siehste, wie schlecht Images sind. ☺

Und ich dachte schon, es wären meine Augen. 😀

Es ging mir um dass Quoting um Kommando, Umleitung und Parameter "date >> $HOME/...".

Ah ja. Mir sind Systemd-Timer deutlich lieber. Bei Anacron finde ich diese ganzen Indirektionen mit run-parts tendenziell verwirrend.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

rklm schrieb:

user_unknown schrieb:

Da siehste, wie schlecht Images sind. ☺

Und ich dachte schon, es wären meine Augen. 😀

Es ging mir um dass Quoting um Kommando, Umleitung und Parameter "date >> $HOME/...".

Ah ja. Mir sind Systemd-Timer deutlich lieber. Bei Anacron finde ich diese ganzen Indirektionen mit run-parts tendenziell verwirrend.

Wenn es wenigstens ordentlich dokumentiert wäre. Hast Du irgendwo gefunden, was "run-parts" bewirkt und was --report bewirkt?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

user_unknown schrieb:

Hast Du irgendwo gefunden, was "run-parts" bewirkt und was --report bewirkt?

run-parts wird recht häufig genutzt, wenn man Aktionen aus mehreren Einzelteilen zusammensetzen will - --report sollte die Namen der Skripte ausgeben, die eine Ausgabe machen:

       --report
              ähnlich  zu  --verbose,  gibt  aber nur die Namen der Skripte aus, die eine Ausgabe
              erstellen. Die Namen der Skripte werden entweder auf Stdout oder Stderr ausgegeben,
              abhängig davon, wo das erste Skript seine Ausgabe hin ausgibt.
Antworten |