powerbook_blog

klein, praktisch, unverdaulich seit 2004

CLI: Crontabs oder was das Powerbook machen sollte, wenn es schläft

| 2 Kommentare

Bei Apfeltalk gabs vor einen paar Tagen einen netten Thread PB Nächtliche Selbst Analyse.

OS X fährt zu bestimmten Zeiten ein paar Aktionen. Jetzt frage ich mich ja welche. Periodische Aufgaben werden ja in der Regel vom crond verwaltet. Die dazu passende Datei findet man in dem Verzeichnis /etc/. Also schnell den iTerm geöffnet und ein less /etc/crontab abgeschickt.

Im Output sieht man dann u.a. :
# Run daily/weekly/monthly jobs.
15 3 * * * root periodic daily
30 4 * * 6 root periodic weekly
30 5 1 * * root periodic monthly

Liest man jetzt eine der Zeilen so heisst das in etwas (erste Zeile): 15 Minuten – 3 Uhr – jeden tag – jeden Monat – jeden Wochentag (* steht für jeden) – rufe als root – die Datei /etc/daily auf. Dementsprechend die zweite Zeile: jeden Samstag im Monat um 4:30 Uhr rufe als root /etc/weekly auf.

Das ist gerade für einen mobilen Rechner, der so früh morgens noch locker schlummert natürlich ein wenig ungünstig. Ich bin jeden Tag so zwischen 9 und 16 Uhr im Büro, gegen 12 Uhr mache ich meist eine Mittagspause. Also werde ich das mal anpassen: Mit root-Rechten editiere ich also die Datei – sudo emacs /etc/crontab und ersetze in der daily-Zeile die 3 durch eine 12 (im übrigen in den beiden unteren die 4 und die 5 durch eine 9). [Den Emacs beendet man (und speichert gleichzeit) mit der Tastenkomination [ctrl]+X, [ctrl]+S (speichern) [ctrl]+X, [ctrl]+C (beenden).]

Gut. Jetzt werden die Scripte also ausgeführt, wenn das Powerbook auch am Laufen ist. Interessant wäre ja auch noch zu wissen, was da im einzelnen passiert.

less /etc/monthly: Hier scheinen 2 Aktion ausgeführt zu werden. Zum einen Doing login accounting, dort wird ac aufgerufen. Ein man ac bringt vielleicht Klarheit. Finde ich weniger spannend. Zudem werden noch die Logfiles rotiert, was nichts anderes heisst, als dass die Logfiles geleert und der Inhalt als ältere Version abgelegt wird (ls -l /var/log *.log.n.gz ist so ein Archiv).

less /etc/weekly: Sofern eine locate-Datenbank vorhanden ist, wird diese aktualisiert, gleiches gilt für whatis und ebenfalls wird das Rotieren der Logfiles angestossen.

less /etc/weekly: Hier passiert dann doch so allerlei. Zuerst werden einige entmüllende Prozesse angeworfen (Removing scratch and junk files), u.a. wird /tmp bereinigt; msgs -c bereinigt /var/msg/. Weiter wird die netinfo-Datenbank gesichert, danach wird nochmal das System etwas geprüft und wie auch anders die Logfiles werden routiert.

Möchte man eigene Aufgaben hinzufügen (z.B. das periodische Aktualisieren des Webalizers o.ä.) so schreibt man die Angaben sinnvollerweise in eine Datei wie /etc/weekly.local (bzw daily.local oder monthy.local). Diese werden nämlich – soweit vorhanden – ebenfalls von dem jeweiligen Script aufgerufen. So kann man sehr nett den eigenfabrizierten Unsinn von den wichtigen Systemaufrufen trennen (und läuft auch nicht Gefahr, dass die eigenen Einträge bei einem System-Update überschrieben werden.

Netter weiterführender Lesestoff: Macworld: Hands On: Easy Mac Maintenance.

Wem das zuviel CLI-Kram ist, der sollte sich MacJanitor oder TinkerTool System mal ansehen.

2 Kommentare

  1. Oder lieber anacron Die Idee /etc/crontab zu ändern ist garnicht so verkehrt, insb. wenn man weiß, das ein System zu bestimmten Zeiten zwar eingeschaltet, aber vorraussichtlich idle ist – wie z.B. in der Mittagspause.
    Alternativ kann man auch anacron verwenden, der nach dem Systemstart crons Aufgabe übernimmt, und somit die Skripte „bei nächster Gelegenheit“ ausführt. Mehr dazu gibt es ín Alastair’s Place: Anacron on OS X.

  2. oder XJanitor Ganz ähnlich wie anacron geht XJanitor vor.
    Das ist ein Perl Script, was man dann stündlich, alle zwei Stunden oder so ausführt und dann werden bei Bedarf die nötigen Scripten gestartet.
    Der Link dazu? Hier bitte schön: http://theapotek.com/teknotes/archives/000012.html
    Funzt fabelhaft. 😉

Schreib einen Kommentar zu housemaister Antworten abbrechen

Pflichtfelder sind mit * markiert.