Eine frohe Adventszeit wünscht Apfeltalk
  • Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Unser Dezember-Wettbewerb steht unter dem Thema Zeitreise - Macht mit und beteiligt Euch mit Euren kreativen Fotos! Zum Wettbewerb --> Klick

Cron Jobs laufen nicht

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Stimmt, daß er keine absoluten Pfade verwendet, hatte ich glatt übersehen.

Beschreibst Du in Deinem Buch "Unix für Mac OS X" nicht, daß es sehr einfach ist, einen Launchdämon einzurichten und daß die Vereinheitlichung durch launchd ein großer Vorteil ist? Ich schaue nachher nochmal rein ;)
 

Marcel Bresink

Borowitzky
Registriert
28.05.04
Beiträge
8.976
Das ist keins von meinen Büchern... ;)

Die Verwendung von launchd ist sehr umstritten. Zum einen verursacht die Art und Weise, wie Apple launchd einsetzt, große Synchronisationsprobleme beim Start von Netzwerkdiensten, die gegenseitig voneinander abhängig sind. Zum anderen ist die Bedienung und Wartung von der Kommandozeile aus sehr mühsam, da die Dienstbeschreibungen in XML-plist-Syntax vorliegen müssen.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Arggh, stimmt, von Dir war das andere, das über heterogene Netzwerke mit OS X - ebenfalls lesenswert :)

Zu den Abhängigkeiten schreibt Apple einen guten Absatz hier:
http://developer.apple.com/macosx/launchd.html

...
Migrating from StartupItems

Many services are configured using StartupItems for historical reasons. Some, however, are run this way because they have interdependencies. These jobs cannot be directly translated to run under launchd, which does not provide for explicit dependencies. Instead, services are supposed to wait for needed resources to become available, which handles the majority of cases cleanly. Secondly, some services need an explicit shutdown procedure, which is handled by the StopService() function in a StartupItem script.

Services which don't have these requirements can generally be converted directly using the RunAtLoad key to indicate a command to be run a single time at startup. As with modifications to /etc/rc, in some cases a change in daemon design or configuration is more appropriate.

In the long run, Apple recommends designing daemons to not depend on the order in which they are started. Programs should be robust in the case where a service is unavailable, and in some cases, programs should be automatically spawned when needed instead of requiring programs to wait for them.
...
 

fablei

Gast
Hallo,
ersteinmal danke für die vielen Antworten.

Ich habe nun die Pfade absolut gemacht und auch nachgeschaut ob cp im Verzeichnis /bin/ liegt. Dem ist so.

Ändern tut das jedoch nichts am Problem. Ich kann den CronDämon immer noch nicht neu starten, wegen der oben schon geposteten Fehlermeldung. Habe mir mit ps die Prozesse anzeigen lassen und der Cron steht wie in der Fehlermeldung beschrieben auf pid 80.

Vielleicht noch ein Hinweis: Unter CronniX lässt sich der Backup Befehl (/bin/cp -r .....) ohne Probleme ausführen und macht auch was er soll. Dann kann es ja schon mal nicht am Befehl selber liegen, sondern wohl nur am Dämon?

Beste Grüße,
Fabian
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Ich habe inzwischen ein ählich geartetes Problem mit einem mv. Egal was auch immer ich tue, alles andere in der crontab wird abgearbeitet das mv wird einfach ignoriert. Alle Pfade sind absolut eingegeben. Könnte ein hochinteressanter Bug sein...
Gruß Pepi
 

fablei

Gast
Wie gesagt wenn ich wüsste warum ich den Cron Dämon nicht neu starten kann, würden wir vielleicht weiter kommen.

Vielleicht kannst du mal mit:

sudo cron

testen, ob ein Neustart die Jobs zu laufen bringt.

Besten Gruß,
FAbian
 

Patrick

Uelzener Rambour
Registriert
01.05.04
Beiträge
366
Ehrlich gesagt habe ich auch schon öfters das Problem gehabt, daß mit 10.4 cron nicht mehr richtig wollte. Sowohl direkt konfiguriert wie auch über Webmin. Nix ging. Da es mit CronniX geht und ich nicht die Zeit habe, nach der Ursache zu suchen, hab' ich es erst einmal dabei belassen.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
CronniX ist nur eine GUI fürs Einstellen von crontabs. Wenn es damit funktioniert, dann stellt Ihr offensichtlich per Hand etwas falsch ein, was per GUI-Tool korrekt eingestellt wird.

Wie ist Euer Vorgehen beim händischen Einstellen? Welchen Befehl nutzt Ihr?
 

fablei

Gast
Soweit ich weiß, trägt CronniX die Jobs doch nur in die Crontab ein, oder nicht?

Besteht ein unterschied zwischen dem Eintragen per Terminal (crontab -e) und der Eingabe per GUI (CronniX) ?

Ich habe alle Cronjobs per CronniX in die Crontab eintragen lassen. Dort stehen Sie dann auch nach dem ich im Terminal "more etc/crontab" eingebe.

Besten Gruß,
Fabian
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Deine cronjobs hast Du auf 2 oder 3 Uhr nachts konfiguriert. Ist Dein Rechner zu dieser Zeit wach (und nicht im Ruhezustand)?

Du scheinst die Aufgaben unter root laufen lassen zu wollen. Was steht in
/private/etc/crontab
?
 

Marcel Bresink

Borowitzky
Registriert
28.05.04
Beiträge
8.976
Ich kann den CronDämon immer noch nicht neu starten, wegen der oben schon geposteten Fehlermeldung.

Das ist aber nicht das Problem, sondern ganz normal. Du darfst cron nicht neu starten, da er immer läuft. Es gibt aber auch keinen Grund, cron neu zu starten, da ja die /etc/crontab - wie oben schon erwähnt - jede Minute überprüft wird.

Läuft auf dem Server auch der Mail-Dienst? Dann wäre es interessant, die Mail von root auf einen "normalen" Account umzuleiten. Du erhältst dann jedes Mal eine Mail mit der Ausgabe der von cron aufgerufenen Befehle. Möglicherweise macht cron ja alles richtig, aber nachts um 2 hat aus irgendeinem Grund der cp-Befehl ein Problem?

Was passiert, wenn Du

47 19 * * * root /bin/echo "Hello World"

ans Ende der /etc/crontab setzt, wobei Du "47 19" (19:47 Uhr) durch eine Zeit zwei Minuten in der Zukunft ersetzt und nach dem Abspeichern zwei Minuten wartest?

Sollte die Mail konfiguriert sein, müsstest Du eine entsprechende Nachricht per Mail erhalten, sollte sie nicht konfiguriert sein, müsste zumindest eine Fehlermeldung ähnlich wie "postfix/postdrop[]: warning: unable to look up public/pickup" im Protokoll /var/log/system.log erscheinen.
 

Marcel Bresink

Borowitzky
Registriert
28.05.04
Beiträge
8.976
Zu den Abhängigkeiten schreibt Apple einen guten Absatz hier:

Ja, das ist mir alles bekannt. Das Problem ist, dass Apple sich selbst nicht an diese Empfehlung hält. Teilweise ist dies auch technisch unmöglich, denn wenn z.B. bestimmte Netzwerkdienste einmal in der falschen Reihenfolge angestoßen wurden, dann kann es sehr leicht passieren, dass eine zyklische Abhängigkeit entsteht, die nicht mehr von selbst auflösbar ist.
 

fablei

Gast
Hallo,
langsam verstehe ich gar nichts mehr.

Mail für root ist konfiguriert, die Ausgabe im Terminal bringt: No mail for root

Das einrichten eines neuen Jobs mit "Hallo Welt" im System Crontab und im Root Crontab lässt nichts passieren und in der system.log steht auch nichts?

Mich erschleicht das Gefühl das die Jobs gar nicht ausgeführt werden, weil ich die falsche Crontab verwende. Das ist aber auch echt blöd gelöst, dass es so viele verschiedene Crontabs gibt. Jeder Nutzer hat Eine, root und das System auch noch. Kein Wunder das es da Probleme gibt.

Was kann ich nun als nächstes machen? Ich hoffe ihr habt noch Ideen und unterstützt mich weiter so prima.

Der positive Nebeneffekt ist das ich sehr viel über das System lerne :)

Es handelt sich übrigens um einen Server, der immer läuft.

Besten Gruß,
Fabian

P.S.:Welches Problem könnte der cp - Befehl denn nachts um 2 haben?
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
... daß der Rechner im Ruhezustand ist. Dann laufen keine cronjobs.
 

Marcel Bresink

Borowitzky
Registriert
28.05.04
Beiträge
8.976
Sorry, ich hätte Deine crontab auch bis zum Ende der Zeile lesen sollen. Ich habe übersehen, dass in jeder Kommandozeile ein Syntaxfehler steckt: Problem 1: Das Doppelkreuz wird nur in der erste Spalte als Kommentarsymbol verstanden. Problem 2: Ein Prozentzeichen wird in einer Crontab als "Ende der Zeile" interpretiert.

Die korrigierte Crontab sollte wie folgt aussehen:

Code:
# The periodic and atrun jobs have moved to launchd jobs
# See /System/Library/LaunchDaemons
#
# minute        hour    mday    month   wday    who     command
## CCC task: http_taeglich
0       3       *       *       *       root    /etc/ccc.SqRWoKLK.txt >> /private/var/log/cccron.log 
0       2       *       *       *       root    /bin/cp -R /Volumes/Daten1/httpDaten/mystudy /Volumes/Daten2/http_backup/mystudy_`/bin/date +\%m_\%d_\%y`
5       2       *       *       *       root    /bin/cp -R /Volumes/Daten1/httpDaten/moodle /Volumes/Daten2/http_backup/moodle_`/bin/date +\%m_\%d_\%y`
10      2       *       *       *       root    /bin/cp -R /Volumes/Daten1/httpDaten/moodledata /Volumes/Daten2/http_backup/moodledata_`/bin/date +\%m_\%d_\%y`

Um sicherzustellen, dass cron durch die vielen Fehlversuche nicht doch abgestürzt ist, kannst Du ihn mit

sudo killall cron ; sudo /usr/sbin/cron

abwürgen und neu starten.
 

fablei

Gast
Es ist vollbracht :)

Ich danke euch allen für die tatkräftige Unterstützung.

Die Cron Jobs laufen und ich kann wieder schlafen ;)

Aber, da wäre noch was.
Woher, lieber Marcel weißt du das alles? Ich habe so viel zum Thema Cron Jobs gelesen, aber nirgendwo wurde etwas zur Syntax erwähnt. Gibt es Bücher oder andere Quellen die du generell empfehlen kannst?

Vielen Dank nochmal,
Fabian