Hairfeti
Mitglied
Thread Starter
- Dabei seit
- 08.11.2003
- Beiträge
- 464
- Reaktionspunkte
- 0
Da ich heute Lust habe, arbeiten wir das heute von mir angekündigte Thema auch gleich ab.
Ich möchte hier noch einmal darauf hinweisen, daß sich alle meine FAQ-Postings auf meinen Anfangsbeitrag "Kochkurs für UNIXEN" beziehen, den man nur am Anfang der FAQ auffindet, in dem man sich alle Einträge anzeigen lässt.
Weiterhin sind meine Ausführungen teilweise wie ein Aufbaukurs gestaltet, so daß man den ersten Beitrag gelesen haben muß, um die anderen begreifen zu können. Das deshalb, weil ich mich sonst mehrmals unnötig wiederholen müßte und mir das kein Spaß macht. Die FAQ ist nun mal so gestaltet daß man nicht halten und walten kann wie man will, deshalb habe ich mir diesen Quatsch einfallen lassen, um dennoch eine gewisse Ordnung meiner Beiträge zu gewährleisten.
Was ist der Cron-Dienst in einem UNIX-System wie Mac OS X, was tut er, wie läuft er ab und wozu ist er nützlich? Damit beschäftigen wir uns jetzt.
Was zum Teufel ist also CRON? Wird einem damit ne Krone aufgesetzt und man regiert damit jetzt wie ein Kaiser oder König? Ja, so könnte man es zunächst ausdrücken, wenn man will.
Viele Leute sagen immer:
Mann, alles muß man allein machen, der Rechner ist vielleicht ein Happen dumm, wenn man nicht alles selbst macht ... und ... und ... und.
Cron ist ein Dienst der, wenn man ihn qualifiziert konfiguriert, einem eine Menge Arbeit im System bei der täglichen Arbeit abnehmen kann. Er läuft im Hintergrund ab, so daß man nicht direkt etwas von ihm mitbekommt. Nur manchmal, etwa morgens 3.15 Uhr, 4.30 Uhr und 5.30 Uhr in der Frühe kommt es einem vor als wenn irgendwas oder wer im Hintergrund die gesamte Festplatte löscht. Daß dies nicht geschieht, stellt man nach einem Neustart schnell fest, aber was passiert denn da wirklich?
Zunächst mal läuft Cron bei jedem schon im System wenn man es nicht abgestellt hat. Und zu gewissen Zeiten, meist früh morgens wenn man es nicht verändert, laufen einige Programme oder Scripts ab die das System warten und aufräumen oder Logfile komprimieren und ordnen, und noch einige Sachen mehr. Das sind Standardeinstellungen die bei der Installation des Systems mit eingerichtet werden.
Was hindert uns nun, den Standardeinträgen unsere privaten Wünsche diesbezüglich mit einzutragen und ablaufen zu lassen? Eigentlich nichts, oder?
Wenn man also unbedingt jeden Morgen seine gesamte Festplatte gelöscht haben möchte, so kann man das damit tun. Mancheiner will aber auch nur daß sich der Rechner ausschaltet bevor man ein wichtiges Dokument abgespeichert und gesichert hat, das kann man auch. Man kann aber auch hunderte Programme sinnvoll über den gesamten Tag verteilt im Hintergrund ablaufen lassen, ohne dabei noch einen Finger krumm zu machen. Und das ist dann die Krone des Kaisers meine ich, stimmts? Wenn man sich diesen Dienst so zu Nutzen machen kann, dann hat man den Hauptgewinn gezogen.
Dazu muß ich noch sagen daß CRON kein Spielzeug ist, und eine Arbeit damit nur in Erwägung zu ziehen ist, wenn man ernsthaft damit eine Automatisierung von Abläufen zum Vorteil des Systems erreichen möchte. CRON ist ein Dienst des Vertrauens, da vorallem Abläufe damit realisiert werden die im Namen des Root ein System in Hochform halten und nicht das Gegenteil bewirken sollen. Will man Programme zu einem bestimmten Zweck testen, sollte man dazu lieber Apple-Script oder eine niedere Form der Shell verwenden die nicht so viel Schaden anrichten können wie ein Terminal-Befehl eines System-Administrators.
Schauen wir uns also zunächst mal im Terminal eine Cronjob-Datei an und finden die Wirkungsweise von CRON heraus:
Da sehen wir nun folgendes:
Das sind zunächst mal Shellangaben, ne Menge Zahlen, Rauten und Wörter die man sich mit etwas Fantasie schon zusammenreimen könnte. Von oben nach unten lese ich euch mal vor was da steht und übersetze es mal für uns.
Ich heiße crontab und liege im Verzeichnis etc in der Rootebene (/)
Meine Shell zur Ausführung von Programmen und Aktionen ist die sh in /bin
Pfade die für Programme und auszuführende Befehle in Frage kommen sind nur in den Verzeichnissen /etc:/bin:/sbin:/usr/bin:/usr/sbin zu erwarten und üblich, wenn Befehle ohne Pfadangaben abgegeben werden.
Das Homeverzeichnis für LogFile ist /var
Minute, Stunde, Tag, Monat, Tag des Monats, von wem, Befehl
das sollte eindeutig und verständlich sein.
Nach der Reihenfolge wird ein genauer Startpunkt von Programmen durch den Crondienst ermöglicht.
Jeden Tag der Woche, jeden Monat, 3.15 Uhr erfolgt damit der Root-Befehl periodic daily
Am 6. Tag der Woche, jeden Monat, 4.30 der Befehl periodic weekly
Am ersten Tag des Monats, jeden Monat, 5.30 der Befehl periodic monthly
Aufräumarbeiten die für das System wichtig sind. Was macht man aber nun wenn man nie um diese Zeiten den Rechner in Gebrauch hat? Nun, dann ändert man diese Zeiten zu solchen wie sie für uns zutreffen würden. Ganz einfach.
Alle Cronjobs der Benutzer des Computers liegen im Normalfall im Verzeichnis "/var/cron/tabs/" in einer Datei die den Namen des Benutzers trägt. Heißt man also "Holzlatte", so legt man als Root in das Verzeichnis eine Datei namens "Holzlatte" und richtet dort die gewünschten Cronjobs des Benutzers ein so wie wir es oben gelernt haben. Anders ist es leider nicht möglich, ich sagte schon daß der Dienst auf Vertrauen basiert und vom System-Admin eine Erlaubnis benötigt.
Programme die man zur Anwendung bringen könnte, werde ich hier im Rahmen meiner Erklärung aus Sicherheitsgründen nicht nennen und weitergeben. Ich hoffe ihr habt dafür Verständnis. Jeder der sich mit dem Terminal und der Shell soweit auskennt wie es für die Sicherheit des Systems erforderlich ist, kennt gängige Befehle die man mit dem Crondienst ausführen kann und weiß über deren Ausführung bescheid.
Das wars dann ... Alles Gute an alle ...
Ich möchte hier noch einmal darauf hinweisen, daß sich alle meine FAQ-Postings auf meinen Anfangsbeitrag "Kochkurs für UNIXEN" beziehen, den man nur am Anfang der FAQ auffindet, in dem man sich alle Einträge anzeigen lässt.
Weiterhin sind meine Ausführungen teilweise wie ein Aufbaukurs gestaltet, so daß man den ersten Beitrag gelesen haben muß, um die anderen begreifen zu können. Das deshalb, weil ich mich sonst mehrmals unnötig wiederholen müßte und mir das kein Spaß macht. Die FAQ ist nun mal so gestaltet daß man nicht halten und walten kann wie man will, deshalb habe ich mir diesen Quatsch einfallen lassen, um dennoch eine gewisse Ordnung meiner Beiträge zu gewährleisten.
Was ist der Cron-Dienst in einem UNIX-System wie Mac OS X, was tut er, wie läuft er ab und wozu ist er nützlich? Damit beschäftigen wir uns jetzt.
Was zum Teufel ist also CRON? Wird einem damit ne Krone aufgesetzt und man regiert damit jetzt wie ein Kaiser oder König? Ja, so könnte man es zunächst ausdrücken, wenn man will.
Viele Leute sagen immer:
Mann, alles muß man allein machen, der Rechner ist vielleicht ein Happen dumm, wenn man nicht alles selbst macht ... und ... und ... und.
Cron ist ein Dienst der, wenn man ihn qualifiziert konfiguriert, einem eine Menge Arbeit im System bei der täglichen Arbeit abnehmen kann. Er läuft im Hintergrund ab, so daß man nicht direkt etwas von ihm mitbekommt. Nur manchmal, etwa morgens 3.15 Uhr, 4.30 Uhr und 5.30 Uhr in der Frühe kommt es einem vor als wenn irgendwas oder wer im Hintergrund die gesamte Festplatte löscht. Daß dies nicht geschieht, stellt man nach einem Neustart schnell fest, aber was passiert denn da wirklich?
Zunächst mal läuft Cron bei jedem schon im System wenn man es nicht abgestellt hat. Und zu gewissen Zeiten, meist früh morgens wenn man es nicht verändert, laufen einige Programme oder Scripts ab die das System warten und aufräumen oder Logfile komprimieren und ordnen, und noch einige Sachen mehr. Das sind Standardeinstellungen die bei der Installation des Systems mit eingerichtet werden.
Was hindert uns nun, den Standardeinträgen unsere privaten Wünsche diesbezüglich mit einzutragen und ablaufen zu lassen? Eigentlich nichts, oder?
Wenn man also unbedingt jeden Morgen seine gesamte Festplatte gelöscht haben möchte, so kann man das damit tun. Mancheiner will aber auch nur daß sich der Rechner ausschaltet bevor man ein wichtiges Dokument abgespeichert und gesichert hat, das kann man auch. Man kann aber auch hunderte Programme sinnvoll über den gesamten Tag verteilt im Hintergrund ablaufen lassen, ohne dabei noch einen Finger krumm zu machen. Und das ist dann die Krone des Kaisers meine ich, stimmts? Wenn man sich diesen Dienst so zu Nutzen machen kann, dann hat man den Hauptgewinn gezogen.
Dazu muß ich noch sagen daß CRON kein Spielzeug ist, und eine Arbeit damit nur in Erwägung zu ziehen ist, wenn man ernsthaft damit eine Automatisierung von Abläufen zum Vorteil des Systems erreichen möchte. CRON ist ein Dienst des Vertrauens, da vorallem Abläufe damit realisiert werden die im Namen des Root ein System in Hochform halten und nicht das Gegenteil bewirken sollen. Will man Programme zu einem bestimmten Zweck testen, sollte man dazu lieber Apple-Script oder eine niedere Form der Shell verwenden die nicht so viel Schaden anrichten können wie ein Terminal-Befehl eines System-Administrators.
Schauen wir uns also zunächst mal im Terminal eine Cronjob-Datei an und finden die Wirkungsweise von CRON heraus:
@root>more /etc/crontab
Da sehen wir nun folgendes:
# /etc/crontab
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour mday month wday who command
#
#*/5 * * * * root /usr/libexec/atrun
#
# Run daily/weekly/monthly jobs.
15 3 * * * root periodic daily
30 4 * * 6 root periodic weekly
30 5 1 * * root periodic monthly
Das sind zunächst mal Shellangaben, ne Menge Zahlen, Rauten und Wörter die man sich mit etwas Fantasie schon zusammenreimen könnte. Von oben nach unten lese ich euch mal vor was da steht und übersetze es mal für uns.
Ich heiße crontab und liege im Verzeichnis etc in der Rootebene (/)
Meine Shell zur Ausführung von Programmen und Aktionen ist die sh in /bin
Pfade die für Programme und auszuführende Befehle in Frage kommen sind nur in den Verzeichnissen /etc:/bin:/sbin:/usr/bin:/usr/sbin zu erwarten und üblich, wenn Befehle ohne Pfadangaben abgegeben werden.
Das Homeverzeichnis für LogFile ist /var
Minute, Stunde, Tag, Monat, Tag des Monats, von wem, Befehl
das sollte eindeutig und verständlich sein.
Nach der Reihenfolge wird ein genauer Startpunkt von Programmen durch den Crondienst ermöglicht.
Jeden Tag der Woche, jeden Monat, 3.15 Uhr erfolgt damit der Root-Befehl periodic daily
Am 6. Tag der Woche, jeden Monat, 4.30 der Befehl periodic weekly
Am ersten Tag des Monats, jeden Monat, 5.30 der Befehl periodic monthly
Aufräumarbeiten die für das System wichtig sind. Was macht man aber nun wenn man nie um diese Zeiten den Rechner in Gebrauch hat? Nun, dann ändert man diese Zeiten zu solchen wie sie für uns zutreffen würden. Ganz einfach.
Alle Cronjobs der Benutzer des Computers liegen im Normalfall im Verzeichnis "/var/cron/tabs/" in einer Datei die den Namen des Benutzers trägt. Heißt man also "Holzlatte", so legt man als Root in das Verzeichnis eine Datei namens "Holzlatte" und richtet dort die gewünschten Cronjobs des Benutzers ein so wie wir es oben gelernt haben. Anders ist es leider nicht möglich, ich sagte schon daß der Dienst auf Vertrauen basiert und vom System-Admin eine Erlaubnis benötigt.
Programme die man zur Anwendung bringen könnte, werde ich hier im Rahmen meiner Erklärung aus Sicherheitsgründen nicht nennen und weitergeben. Ich hoffe ihr habt dafür Verständnis. Jeder der sich mit dem Terminal und der Shell soweit auskennt wie es für die Sicherheit des Systems erforderlich ist, kennt gängige Befehle die man mit dem Crondienst ausführen kann und weiß über deren Ausführung bescheid.
Das wars dann ... Alles Gute an alle ...
Zuletzt bearbeitet: