RSS
 

Automatische Systempflege bei Mac OS X

Veröffentlicht am Oktober 21, 2011 um 10:01 am

21 Okt
automatische-systempflege-bei-mac-os-x

Mit der Einführung von Mac OS 10.4 (Tiger) wurde der Automatismus, welcher die systemtechnischen Wartungsmaßnahmen regelmäßig ausführt von crontab auf launchd umgestellt. Dies bedeutet nicht, daß man mit der crontab auf Mac OS X nicht mehr arbeiten könnte, sie funktioniert nach wie vor. Doch dieses Verfahren ist eben alt und wird von Apple selbst nicht mehr angewandt (s. Artikel background maintenance tasks).

Der launchd Mechanismus ist ein ziemlich schlaues Verfahren zur Verwaltung von Systemdiensten und Hintergrundprozessen. Einer meiner folgenden Artikel wird sich speziell mit diesem Thema befassen.

Die vom launchd regelmäßig ausgeführten Wartungsmaßnahmen sind:
* periodic daily – /System/Library/LaunchDaemons/com.apple.periodic-daily.plist
* periodic weekly – /System/Library/LaunchDaemons/com.apple.periodic-weekly.plist
* periodic monthly – /System/Library/LaunchDaemons/com.apple.periodic-monthly.plist

Es gibt schon zahlreiche Artikel (u.a. diesen hier) die sich mit dem Thema befassen, was da genau im Hintergrund getan wird. Doch wenige zeigen einem, wie man die Uhrzeit des Ablaufs anpaßt.
Zum Beispiel funktioniert der Mechanismus auf unserem Mac Server ohne Probleme (der Server ist ja auch rund um die Uhr angeschaltet).

zebra:~ super$ cd /var/log
zebra:log super$ ls -ltr *.out
-rw-r--r--  1 root  wheel    1653 Oct  1 05:30 monthly.out
-rw-r--r--  1 root  wheel    6269 Oct 15 03:15 weekly.out
-rw-r--r--  1 root  wheel  455430 Oct 21 03:15 daily.out

Hingegen werden diese Systempflegemaßnahmen auf meinem MacBook eigentlich nie ausgeführt, denn zwischen 3 und 6 Uhr mogens ist der entweder im Stromsparmodus schlafen gelegt oder ganz ausgeschaltet.

Xcode Ansicht der Konfigurationsdatei

Man kann die Skripte natürlich manuell aus dem Terminal Programm starten, doch zwischen 12 und 13 Uhr mittags ist bei mir eine gute Zeit wann diese auf meinem mobilen Computer automatisch ihren Dienst tun können. Also ändern wir das, und das geht bspw. so …

[super@sequoia:LaunchDaemons]? cd /System/Library/LaunchDaemons
[super@sequoia:LaunchDaemons]? sudo vi com.apple.periodic*
....

Wer den vi noch nicht bedienen kann, findet hier eine Anleitung.

Will man die Änderungen hingegen im Xcode 4 mit dem eingebauten Property List Editor durchführen, dann sind dazu mehr Anpassungen nötig.

[super@sequoia:LaunchDaemons]? cd /System/Library/LaunchDaemons
[super@sequoia:LaunchDaemons]? sudo chmod o+w . com.apple.periodic*
[super@sequoia:LaunchDaemons]? open -a /Developer/Applications/Xcode.app com.apple.periodic*
....
[super@sequoia:LaunchDaemons]? sudo chmod g-w,o-w . com.apple.periodic*
[super@sequoia:LaunchDaemons]? sudo chown root:wheel com.apple.periodic*
[super@sequoia:LaunchDaemons]? sudo xattr -d com.apple.xcode.PlistType com.apple.periodic*

Warum bloß soviel Zusatzaufwand für das bißchen mehr an Komfort?
Nun es ist so, daß Xcode zum einen die geänderten Dateien dem Benutzer und seiner primären Gruppe übereignet, und zusätzlich noch Metadaten den Dateien hinzufügt.
Wenn Metadaten zu einer Datei existieren, wird das durch ein @ kenntlich gemacht …

[super@sequoia:LaunchDaemons]? ls -le@ com.apple.periodic*
-rw-rw-r--@ 1 super staff  - 612 23 Okt 10:46 com.apple.periodic-daily.plist
	com.apple.xcode.PlistType	  0 
-rw-rw-r--@ 1 super staff  - 665 21 Okt 14:01 com.apple.periodic-monthly.plist
	com.apple.xcode.PlistType	  0 
-rw-rw-r--@ 1 super staff  - 667 21 Okt 14:01 com.apple.periodic-weekly.plist
	com.apple.xcode.PlistType	  0

Die hier ausgegeben Zeilen zeigen die Dateirechte, welche nach dem Speichern der Änderungen vorherrschten, bevor die Kommandos zum Herstellen des ursprünglichen Zustandes ausgeführt wurden.
Einer meiner folgenden Artikel wird sich noch genauer mit diesem Thema auseinandersetzen.

Die eigentlich durchzuführenden Änderungen liegen auf der Hand …

periodic-daily.plist

                <key>Hour</key>
		<integer>12</integer>
		<key>Minute</key>
		<integer>13</integer>

Jeden Tag um 12:13 Uhr geht es mit der täglichen Pflege los.

periodic-weekly.plist

		<key>Hour</key>
		<integer>12</integer>
		<key>Minute</key>
		<integer>23</integer>
		<key>Weekday</key>
		<integer>1</integer>

Jeden Montag (Sonntag = 0) kommen um 12:23 Uhr die wöchentlichen Pflegemaßnahmen hinzu. Als Standard ist hier der Samstag (6) eingetragen. Aber ich arbeite nicht jedes Wochenende, so kommt mir persönlich der Montag gelegener.

periodic-monthly.plist

		<key>Hour</key>
		<integer>12</integer>
		<key>Minute</key>
		<integer>37</integer>
		<key>Day</key>
		<integer>1</integer>

Und an jedem ersten im Monat werden um 12:37 Uhr die monatlichen Pflegevorgänge gestartet.
Natürlich werden diese Einstellung erst nach dem erneuten Laden der Konfigurationsdateien aktiviert. Ganz sicher ist das nach einem Neustart des Systems der Fall.

 

Tags: ,

Hinterlassen Sie eine Nachricht