Cron: Skript wird nicht ausgeführt
Hallo die Liste. Folgendes ist mir gerade (unangenehm) aufgefallen: Cron führt die weekly-Skripten nicht aus, wenn die Daily-Skripten so lange laufen, daß die weekly-Zeit vorüber ist. Kann das sein? In /etc/crontab steht u.a.: 14 0 * * * root rm -f /var/spool/cron/lastrun/cron.daily 29 0 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly Seit ca. April dieses Jahres laufen meine cron.daily-Skripten zwischen zwei und fünf Stunden. Vorher waren es nur ein paar Minuten. Und genau seitdem werden die cron.weekly-Skripten nicht mehr ausgeführt. Also vermute ich hier den Zusammenhang. Wie begegnet man dem? Ich kann natürlich die cron.weekly-Zeit auf 5:00 legen. Aber was, wenn das daily-Skript sieben Stunden braucht? Dann gehts wieder nicht. Welche Lösung ist kunstgerecht? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Andre, was sagt denn Dein syslog um 0.20, samstags ? Ich kann auf einem OpenSuSE 10.2 unter /etc/sysconfig/cron folgendes anpassen: --- ## Type: yesno ## Default: no # # generate syslog message for all scripts in # cron.{hourly,daily,weekly,monthly} # even if they haven't returned an error? (yes/no) # SYSLOG_ON_NO_ERROR="yes" --- Wenn Du auch einen solchen Schalter hast, setze ihn auf yes, dann ist Dein syslog eventl. informativer für Dich. Bernd -- Bernd Lentes staatl. geprüfter Techniker Systemadministration Institut für Entwicklungsgenetik GSF Raum 35/1008f Ingolstädter Landstraße 1 85764 München-Neuherberg mailto:bernd.lentes@gsf.de phoneto:089/3187-1241 faxto:089/3187-3826 http://www.gsf.de/idg
-----Original Message----- From: Andre Tann [mailto:atann@gmx.net] Sent: Thursday, June 28, 2007 4:38 PM To: opensuse-de@opensuse.org Subject: Cron: Skript wird nicht ausgeführt
Hallo die Liste.
Folgendes ist mir gerade (unangenehm) aufgefallen: Cron führt die weekly-Skripten nicht aus, wenn die Daily-Skripten so lange laufen, daß die weekly-Zeit vorüber ist. Kann das sein? -- Andre Tann
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Lentes, Bernd, Donnerstag, 28. Juni 2007 17:20:
SYSLOG_ON_NO_ERROR="yes"
Danke für den Tip, das kannte ich noch gar nicht. Allerdings habe ich mein Problem anderweitig in den Griff gekriegt. Grrr... cron konnte rsync nicht finden, /usr/bin/rsync dagegen schon. Wieso das Skript allerdings früher lief, das ist mir auch nicht klar. Jetzt klappts jedenfalls wieder. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Don, 28 Jun 2007, Andre Tann schrieb:
Seit ca. April dieses Jahres laufen meine cron.daily-Skripten zwischen zwei und fünf Stunden. Vorher waren es nur ein paar Minuten. Und genau seitdem werden die cron.weekly-Skripten nicht mehr ausgeführt. Also vermute ich hier den Zusammenhang.
Was um zum Geier braucht denn da so lange? Es wäre vermutlich sinnvoller, wenn du den "Langläufer" nur von cron anschubsen läßt und das dann unabhängig von cron weiterlaufen läßt. Im Anschubsscript in /etc/cron.daily solltest du noch dafür sorgen, daß der Langläufer nur einmal läuft (checkproc -f pidfile|startproc -f pidfile bieten sich an)... Falls du die Ausgabe zugemailt bekommen willst kann man das auch im Anschubsscript machen. Fragen? -dnh -- "Irrigation of the land with sewater desalinated by fusion power is ancient. It's called 'rain'." -- Michael McClary, in alt.fusion -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller, Freitag, 29. Juni 2007 06:44:
Was um zum Geier braucht denn da so lange?
Da werden viele Gigabytes gebackupt
Es wäre vermutlich sinnvoller, wenn du den "Langläufer" nur von cron anschubsen läßt und das dann unabhängig von cron weiterlaufen läßt.
Bin da nicht so sicher. Im cron.daily wird der Datenbestand irgendwohin gebackupt, im cron.weekly wird er woandershin gebackupt. Jetzt will ich nicht unbedingt, daß zwei Backup-Prozesse parallel zu laufen anfangen. Zugegebenermaßen habe ich aber noch nicht untersucht, ob cron.weekly-Skripten unabhängig davon gestartet werden, ob die daily-Skripten schon durch sind. Lediglich weiß ich, daß die daily-Skripten nicht parallel gestartet werden, sondern der Reihe nach.
Im Anschubsscript in /etc/cron.daily solltest du noch dafür sorgen, daß der Langläufer nur einmal läuft (checkproc -f pidfile|startproc -f pidfile bieten sich an)... Falls du die Ausgabe zugemailt bekommen willst kann man das auch im Anschubsscript machen.
Fragen?
Ja, allgemeiner Art: Entweder so: checkproc /mein/skript || /mein/skript oder so startproc /mein/skript In beiden Fällen wird /mein/skript nur gestartet, wenn es nicht schon anderweitig läuft, richtig? Ich verstehe nicht ganz, warum Du -f haben willst. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 02 Jul 2007, Andre Tann schrieb:
David Haller, Freitag, 29. Juni 2007 06:44:
Was um zum Geier braucht denn da so lange?
Da werden viele Gigabytes gebackupt
Das sollte eher nicht das cron-script blockieren...
Es wäre vermutlich sinnvoller, wenn du den "Langläufer" nur von cron anschubsen läßt und das dann unabhängig von cron weiterlaufen läßt.
Bin da nicht so sicher. Im cron.daily wird der Datenbestand irgendwohin gebackupt, im cron.weekly wird er woandershin gebackupt. Jetzt will ich nicht unbedingt, daß zwei Backup-Prozesse parallel zu laufen anfangen.
Da helfen Lockfiles. Ggfs. ein gemeinsames für daily und weekly, wenn auch die nicht parallel laufen sollen.
Zugegebenermaßen habe ich aber noch nicht untersucht, ob cron.weekly-Skripten unabhängig davon gestartet werden, ob die daily-Skripten schon durch sind.
Weiß ich auch nicht, AFAIK laufen die nacheinander (gestern lief hier glaub weekly (oder monthly) recht lange, und nicht parallel...
Lediglich weiß ich, daß die daily-Skripten nicht parallel gestartet werden, sondern der Reihe nach.
Jup.
Im Anschubsscript in /etc/cron.daily solltest du noch dafür sorgen, daß der Langläufer nur einmal läuft (checkproc -f pidfile|startproc -f pidfile bieten sich an)... Falls du die Ausgabe zugemailt bekommen willst kann man das auch im Anschubsscript machen.
Fragen?
Ja, allgemeiner Art: Entweder so:
checkproc /mein/skript || /mein/skript
oder so
startproc /mein/skript
In beiden Fällen wird /mein/skript nur gestartet, wenn es nicht schon anderweitig läuft, richtig?
Ich verstehe nicht ganz, warum Du -f haben willst.
Deswegen: startproc does not use the pid to search for a process but the full path of the corresponding program which is used to identify the executable (see proc(5)). Da es wohl geschickter ist, in /etc/cron.{daily,weekly} nur ein Anschubsscript zu haben... Nur mal so "hingedacht" und ungetestet: ==== /etc/cron.daily/mybackup ==== #!/bin/sh /sbin/startmybackup --daily & ==== ==== /etc/cron.weekly/mybackup ==== #!/bin/sh /sbin/startmybackup --weekly & ==== ==== /sbin/startmybackup ==== #!/bin/bash BACKUPPROG="/foo/bar/baz" DAILYARGS=( "--meine" "Optionen" "--fuer" "das" "--taegliche" "Backup mit Leerzeichen" ) WEEKLYARGS=( "--meine" "Optionen" "--fuer" "das" "--woechentliche" "Backup" ) while test $# -gt 0; do case "$1" in --daily) ARGS="${DAILYARGS[@]}"; shift;; --weekly) ARGS="${WEEKLYARGS[@]}"; shift;; *) # hier könnte man noch mehr machen... shift;; esac done /sbin/startproc "$BACKUPPROG" "${ARGS[@]}" 2>&1 | logger -f /var/log/mybackup.log if ${PIPESTATUS[0]} -eq 0; then subject="Backup Succeeded" else subject="Backup had errors" fi /bin/mail -s "$subject" root < /var/log/mybackup.log ==== oder irgendwie sowas in der Art ;) -dnh -- BOFH excuse #415: Maintenance window broken -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Andre Tann
-
David Haller
-
Lentes, Bernd