ubuntuusers.de

Startzeitpunkt der cron.daily

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

gnude

Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo, im Moment klemmt es mit den cron Diensten bei mir wohl etwas. Also ich möchte ein Script Abends um 20.25 jeden Tag ausführen lassen. Ich habe die crontab wie unten gezeigt modifiziert. Das Script selbst startet aber erst morgends, was im syslog ja auch vermerkt ist. Ich denke es hängt damit zusammen das anacron das im Moment verwaltet, und sich nicht an die Uhrzeit der crontab hält.

Inhalt der crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
5 *     * * *   root    cd / && run-parts --report /etc/cron.hourly
25 20   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 16   * * 6   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

#
crontab (END)

der Auszug aus der log Datei mit less /etc/log/syslog | grep cron.daily

Jul  9 20:13:01 SERVER CRON[19861]: (root) CMD (   test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Jul  9 20:25:01 SERVER CRON[19936]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Jul 10 07:30:02 SERVER anacron[21701]: Will run job `cron.daily' in 5 min.
Jul 10 07:35:02 SERVER anacron[21701]: Job `cron.daily' started
Jul 10 07:35:02 SERVER anacron[21713]: Updated timestamp for job `cron.daily' to 2019-07-10

kizu

Avatar von kizu

Anmeldungsdatum:
31. Juli 2009

Beiträge: 677

Wohnort: Buchholz

Moin,

ich verstehe nicht ganz, was du erreichen möchtest.

Möchtest du, dass Cron dein Script ausführt, genau zeitgesteuert, oder Anacron, das einen Zeitintervall einhält und wobei die Zeit egal ist? Cron (Abschnitt „Anacron-Anac-h-ronistic-Cron“)

MfG, Daniel

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo Kizu,

der Rechner läuft 24/7 und ich möchte erreichen das ein Befehl zu einer festen Uhrzeit ausgeführt wird. Daher ist Anacron wohl weniger geeignet. Ich bin davon ausgegangen das er die Einstellungen von cron übernimmt und nur dann umplant wenn der Rechner zur gewünschten Zeit aus ist.

Wie kann ich für ein Script denn eine feste Uhrzeit vergeben?

Spontan kam mir die Idee einfach das Paket anacron zu deinstallieren, dann müsste der normale Cron ja wieder ziehen....

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Wie kann ich für ein Script denn eine feste Uhrzeit vergeben?

Über eine systemd Timer Unit. Das ist nun mal der aktuelle Weg, nicht mehr Cron & Co. Abgesehen davon bietet systemd mehr Möglichkeiten.

Gruß, noisefloor

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9704

Wohnort: Münster

gnude schrieb:

[…] crontab

[…]
5 *     * * *   root    cd / && run-parts --report /etc/cron.hourly
25 20   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Der gelb markierte Befehl besagt: „Führe die Skripte in /etc/cron.daily nur dann aus, wenn es keine ausführbare Datei /usr/sbin/anacron gibt.“

Was zeigen denn diese Befehle:

ls -l /usr/sbin/anacron
test -x /usr/sbin/anacron ; echo $?
Jul  9 20:13:01 SERVER CRON[19861]: (root) CMD (   test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Jul  9 20:25:01 SERVER CRON[19936]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Jul 10 07:30:02 SERVER anacron[21701]: Will run job `cron.daily' in 5 min.
Jul 10 07:35:02 SERVER anacron[21701]: Job `cron.daily' started
Jul 10 07:35:02 SERVER anacron[21713]: Updated timestamp for job `cron.daily' to 2019-07-10

anacron hat die Skripte aus /etc/cron.daily gestartet, das wurde aber nicht von der Datei /etc/crontab ausgelöst.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9704

Wohnort: Münster

gnude schrieb:

[…] Wie kann ich für ein Script denn eine feste Uhrzeit vergeben?

cron wird ja weiterhin ausgeführt. Du kannst Dein Skript nach wie vor darüber starten. Du musst aber natürlich in der Datei /etc/crontab das Skript aufrufen. Das machst Du ja bisher nicht.

Alternative wäre, wie bereits genannt, eine timer-unit für systemd. Trotz systemd spricht aber nichts gegen eine weitere Nutzung von /etc/crontab.

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Ich habe die /etc/crontab nun wie folgt umgebaut:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
47 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 22   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 16   * * 6   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
10 01   * * *   root    /bin/backup
#

Kann das so funktionieren?

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9704

Wohnort: Münster

Bei dieser crontab erwarte ich, dass

  1. stündlich nach der 47. Minute die Skripte in /etc/cron.hourly von cron (oder vielleicht auch von systemd) gestartet werden,

  2. und täglich um 10:01 Uhr das Programm/Skript /bin/backup gestartet wird, sofern diese Datei existiert, ausführbar ist und selber weiß, was sie tun soll.

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Ist es nicht genaugenommen 01.10 , da hier zuerst die Minuten und dann die Stunden kommen?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

gnude schrieb:

Ist es nicht genaugenommen 01.10 , da hier zuerst die Minuten und dann die Stunden kommen?

Genaugenommen 01:10, sozusagen. ☺

kizu

Avatar von kizu

Anmeldungsdatum:
31. Juli 2009

Beiträge: 677

Wohnort: Buchholz

Moin,

gnude schrieb:

der Rechner läuft 24/7 und ich möchte erreichen das ein Befehl zu einer festen Uhrzeit ausgeführt wird. Daher ist Anacron wohl weniger geeignet. Ich bin davon ausgegangen das er die Einstellungen von cron übernimmt und nur dann umplant wenn der Rechner zur gewünschten Zeit aus ist.

Auch das ist möglich, zumindest habe ich die folgende Theorie:

Über die Datei /etc/anacrontab kannst du dir selber Jobs erstellen. In /var/spool/anacron/ wird abgespeichert, ob diese Jobs bereits gelaufen sind: https://www.thomas-krenn.com/de/wiki/Anacron#Verzeichnis_.2Fvar.2Fspool.2Fanacron.2F. Dort könntest du, wenn dein Script als root läuft, ja auch selber die entsprechende Datei erstellen und anacron damit daran hindern, das Script erneut auszuführen. Oder du lässt dein Script selbst prüfen, wann es das letzte mal gelaufen ist, indem du einfach beim Ausführen irgendwo eine Datei ablegst, dessen Zeitstempel du dann prüfst. Wenn die Datei älter als 24 Stunden ist, wird das restliche Script ausgeführt, sonst nicht. Dieses Script könntest du dann auch stündlich aufrufen und somit dafür sorgen, dass die Arbeit nachgeholt wird. 😉

MfG, Daniel

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9704

Wohnort: Münster

gnude schrieb:

Ist es nicht genaugenommen 01.10 , da hier zuerst die Minuten und dann die Stunden kommen?

Ja, ich habe in meiner Antwort einen Zahlendreher. Aber viel wichtiger: Funktioniert es denn jetzt wie von Dir vorgesehen? Dann setze bitte den Thread auf gelöst!

Antworten |