/etc/crontab nicht vorhanden (?)

M

mcbutton

Registriert
Thread Starter
Dabei seit
29.10.2009
Beiträge
2
Reaktionspunkte
0
Moin Macuser,

ich verwende Mac OS X 10.5.8 und wollte gerade ein script von mir mit cron schedulen (das ist mein erster Mac, aber nicht mein erstes UNIX). Ich haette eine standard /etc/crontab erwartet - sie ist aber nicht vorhanden.

Koennte mir bitte einer der erfahreneren Mac OS X User sagen, ob das so richtig sein kann? Natuerlich kann ich einfach eine erzeugen, aber komisch finde ich das schon. Vielleicht ist ja ein anderer Standard-Scheduler vorgesehen, von dem ich nichts weiss?

Vielen Dank fuer einen Tip.

Danke von Olli
 
Ja, dass ist ein Unterschied zu LINUX. Ersatz ist der launchd:

http://de.wikipedia.org/wiki/Launchd

Das ist im Prinzip ein XML konfigurierter Daemon der bei Systemstart oder in gewünschten Intervallen Programme startet, sie respawned...
 
Jetzt macht es Sinn. Da kann ich ja mal wieder ein bischen man pages lesen.
Vielen Dank fuer die schnelle Antwort.
 
Man kann aber in Mac OS X immer noch Cron verwenden. Cron wird übrigens auch von launchd gesteuert.
In manchen Fällen verhält sich launchd anders als Cron. Manchmal möchte man vielleicht das zuverlässige und vorhersagbare Verhalten von Cron lieber als das von launchd.
 
Auf jeden Fall editiert man die crontab nur mit
Code:
crontab -e
 
Eigentlich ist das crontab Kommando für die Verwaltung von Benutzer crontab Dateien vorgesehen. /etc/crontab ist aber eine Systemdatei.
 
Manchmal möchte man vielleicht das zuverlässige und vorhersagbare Verhalten von Cron lieber als das von launchd.

Naja, ich finde das Verhalten von Cron eben nicht so richtig vorhersagbar, da Cron immer davon ausgeht, dass der Rechner zur Aktionszeit auch an ist.

Bei Launchd kann ich sicher sein, dass der für heute Nacht um 3 geschedulte Job auch wirklich läuft... selbst wenn der Rechner erst morgen um 9 wieder angeschaltet wird.

Alex
 
Naja, ich finde das Verhalten von Cron eben nicht so richtig vorhersagbar, da Cron immer davon ausgeht, dass der Rechner zur Aktionszeit auch an ist.
...
Ich finde, das ist sogar ausgesprochen vorhersagbar.
Läuft der Rechner zur eingestellten Zeit, wird der Job gestartet, läuft er nicht (bzw. befindet sich im Ruhezustand), wird der Job nicht gestartet.

Bei Launchd kann ich sicher sein, dass der für heute Nacht um 3 geschedulte Job auch wirklich läuft... selbst wenn der Rechner erst morgen um 9 wieder angeschaltet wird.
...
Ja, das ist mir bekannt und mag manchmal auch erwünscht sein - manchmal eben gerade nicht. Der Zeitpunkt, wann das Skript läuft, ist aber meines Wissens nicht wirklich vorhersagbar.

Aber das ist es gar nicht, wo ich hinaus wollte.
Ich weiß nicht, wie das bei Snowleo ist.
Bisher hatte ich in diesem Zusammenhang zwei Probleme mit launchd.

1. Wenn der Rechner zeitweise im Ruhezustand ist, wurden/werden Jobs nicht zur geplanten Zeit gestartet, auch wenn der Rechner zur geplanten Zeit aktiv ist. Die Jobs werden vielmehr um eine im Grund nicht vorhersagbare Zeit aufgeschoben. Anders ausgedrückt. Während der Rechner schläft, steht die Uhr still.

2. Schlimmer noch: Jobs, die Emails auslösen werden (zumindest z.Tl.) nicht richtig abgearbeitet. Beispiel periodic Jobs. Wenn man periodic (ein uraltes, sehr nützliches Unix Wartungstool) so konfiguriert, dass die Ausgaben als Email an den Administrator gesendet werden, werden diese Emails nicht verarbeitet und stattdessen ein Fehler im System Log abgesetzt ("Stray process with PGID equal to this dead job: PID 363 PPID 1 sendmail" oder so ähnlich).
Nicht gut :(

Mag sein, dass die Probleme zwischenzeitlich behoben sind. Nachdem Apple das aber in Jahren seit Einführung von launchd nicht geschafft hat, bin ich diesbezüglich nicht sonderlich optimistisch.

Gruß
maceis

Edit:
Zumindest bei den periodic Jobs scheint das mail Problem durch die Zeilen

23 <key>AbandonProcessGroup</key>
24 <true/>

gelöst zu sein. Warum nicht gleich so, Apple ;).
 
Ja, sicher. Mir hat's nur insgesamt zu lang gedauert.
Ich will ja auch nicht meckern.
Halb halt dann die periodic Jobs wieder mit crond gesteuert und Zeiten eingetragen, zu denen die betroffenen Rechner in aller Regel aktiv sind.
 
Zurück
Oben Unten