gnude
Anmeldungsdatum: 11. Juli 2014
Beiträge: 806
|
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
Anmeldungsdatum: 31. Juli 2009
Beiträge: 669
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: 11176
Wohnort: München
|
|
gnude
(Themenstarter)
Anmeldungsdatum: 11. Juli 2014
Beiträge: 806
|
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
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 28954
Wohnort: WW
|
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
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8554
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
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8554
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)
Anmeldungsdatum: 11. Juli 2014
Beiträge: 806
|
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
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8554
Wohnort: Münster
|
Bei dieser crontab erwarte ich, dass
stündlich nach der 47. Minute die Skripte in /etc/cron.hourly von cron (oder vielleicht auch von systemd) gestartet werden, 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)
Anmeldungsdatum: 11. Juli 2014
Beiträge: 806
|
Ist es nicht genaugenommen 01.10 , da hier zuerst die Minuten und dann die Stunden
kommen?
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
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
Anmeldungsdatum: 31. Juli 2009
Beiträge: 669
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
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8554
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!
|