Allerlei Probleme mit Cron

Hallo

Ich habe diverse Probleme mit Cron. Fangen wir mal mit diesem Beispiel ein.
@weekly echo check >> /sys/block/md0/md/sync_action

Dieser Prozeß sollte einmal pro Woche laufen, d.h, es sollten sieben Tage vergehen bevor er wieder aufgerufen wird?
Stattdessen bekomme ich eine Fehlermeldung, die auftritt, wenn man bevor der Prozeß abgelaufen ist - dauert 3-4 Stunden - ein weitere Check sendet:
/bin/sh: line 0: echo: write error: Device or resource busy

Ähnlich bei getmail und cron. Das Abholen von Emails dauert praktisch nie länger als 5 Sekunden. Zwischen den Mailabrufen liegen 15 Minuten doch trotzdem
bekomme ich doppelte Emails, die der Getmail-Entwickler auf zwei oder mehr Getmail-Prozesse zurückführt, die gleichzeitig auf die selben RC-Files zugreifen.
Das kann doch nicht sein, der Abruf einer oder auch mehrer Emails dauert manuell ausgeführt nie mehr als 10 Sekunden! - Wie kann das den Prozeß 15 Minuten später beeinflussen?
Ich komme mehr und mehr zu der Ansicht, daß es ein grundsätzliches Problem mit cron gibt - verwenden tue ich übrigens cron-4.2-50.1.2.x86_64 auf Suse 13.1.

Ich bin offen und dankbar für alle Ratschläge auch wenn es nur ein “Schau doch mal diese Datei an” ist.

Viele Grüße
Stefan

Was sagt denn:

crontab -l

als root bzw. User?

crontab -l

DO NOT EDIT THIS FILE - edit the master and reinstall.

(/tmp/crontab.s6xk7v installed on Thu Mar 20 12:51:02 2014)

(Cronie version 4.2)

@weekly echo check >> /sys/block/md0/md/sync_action

Ein “less /var/log/messages | grep md0” bringt übrigens folgendes hervor:

2014-04-13T00:00:01.763239+02:00 mars kernel: [7175512.165185] md: data-check of RAID array md0
2014-04-13T00:00:01.764100+02:00 mars /USR/SBIN/CRON[21020]: (root) CMD (echo check >> /sys/block/md0/md/sync_action)
2014-04-13T00:00:01.780483+02:00 mars CRON[21032]: (root) CMD (echo check >> /sys/block/md0/md/sync_action)
2014-04-13T05:24:45.480269+02:00 mars kernel: [7195009.469721] md: md0: data-check done.

Wieso erscheint der Befehl dort zweimal, einmal als /USR/SBIN/CRON und einmal nur als CRON?

Bye
Stefan

Wenn ich @hourly echo date >> /root/count in die root-crontab eintrage bekomme ich folgendes heraus.

Sun Apr 13 19:00:01 CEST 2014
Sun Apr 13 19:00:01 CEST 2014

Sun Apr 13 20:00:01 CEST 2014
Sun Apr 13 20:00:01 CEST 2014

Anscheinend wird das Kommando zweimal kurz hintereinander ausgeführt. Das würde auch erklären wieso ich meine Emails doppelt bekommen habe,
wenn ich getmail über einen cronjob habe laufen lassen. Ich muß allerdings gestehen, daß ich keine Ahnung habe wo man jetzt weiter suchen sollte.

Grüße
Stefan

Und das kommt bei folgender Zeile raus. What the ****?

hourly root echo date >> /root/count

Mon Apr 14 09:00:01 CEST 2014
Mon Apr 14 09:00:01 CEST 2014
Mon Apr 14 09:00:01 CEST 2014
Mon Apr 14 09:00:01 CEST 2014
Mon Apr 14 09:00:01 CEST 2014
Mon Apr 14 09:00:02 CEST 2014

Jetzt bekomme ich sogar 5 Device-Busy-Emails.

Äh, in welcher Datei genau hast du bitte diese Zeile?
So wie es hier steht funktionierts ja gar nicht in der crontab.

Ich hab jetzt mal probeweise bei mir (13.1) folgende Zeile in die crontab geschrieben, und bekomme genau EINE Email und einen Eintrag in /root/count jede Stunde.

@hourly echo `date` >> /root/count

Hast du vielleicht irgendwo symlinks, sodass dein cron die crontab öfter als einmal sieht/ausführt?

ls -l /etc/cron*

Oder hast du vielleicht den Befehl sowohl in /var/spool/cron/tabs/root (das ist das was von dem Befehl “crontab” bearbeitet wird) als auch in /etc/crontab?

Kannst du vielleicht auch mal /etc/crontab posten? (und vielleicht nochmal die Ausgabe von “crontab -l”)

Die root-crontab ist nun leer. Ich habe testweise einen Befehl entsprechend dem in der root-crontab in die /etc/crontab eingetragen, die ich hier vollständig poste.

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root

check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly

-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

0 * * * * root echo date >> /root/count

Die Datei /root/count sieht dabei so aus:

Tue Apr 15 00:00:01 CEST 2014
Tue Apr 15 00:00:01 CEST 2014
Tue Apr 15 00:00:01 CEST 2014
Tue Apr 15 00:00:01 CEST 2014
Tue Apr 15 00:00:01 CEST 2014
Tue Apr 15 00:00:01 CEST 2014

Tue Apr 15 01:00:01 CEST 2014
Tue Apr 15 01:00:01 CEST 2014
Tue Apr 15 01:00:01 CEST 2014
Tue Apr 15 01:00:01 CEST 2014
Tue Apr 15 01:00:01 CEST 2014
Tue Apr 15 01:00:01 CEST 2014

Ich habe schonmal ungewöhnlichen Symlinks oder ähnlichem gesucht, aber nichts gefunden. Sehr merkwürdig.

Viele Grüße
Stefan

Ja, finde ich auch.

Und wie gesagt, bei mir funktioniert das wie erwartet, also glaube ich nicht wirklich an ein allgemeines Problem mit cron.

Kannst du mal schauen, ob vielleicht mehr als ein cron Prozess läuft? Das wäre zumindest eine Erklärung dafür.

ps aux|grep cron