In »var/log« befinden sich idR die Logfiles des Systems und weiteren Diensten. Wie auf UNIX Systemen üblich werden dort die Logfiles ggf komprimiert, rotiert und somit archiviert. Dieser Vorgang wird in der Manpage1) »Trimmung genannt«. Unter Mac OSX wird diese Trimmung durch die Konfigurationsdatei »/etc/newsyslog.conf« konfiguriert. Dort wird eingestellt wann ein Logfile komprimiert wird und wie viele Versionen davon archiviert werden:
/etc/newsyslog.conf
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/appfirewall.log 640 5 1000 * J
/var/log/ftp.log 640 5 1000 * J
/var/log/hwmond.log 640 5 1000 * J
/var/log/install.log 640 5 1000 * J
/var/log/ipfw.log 640 5 1000 * J
/var/log/lookupd.log 640 5 1000 * J
/var/log/lpr.log 640 5 1000 * J
/var/log/mail.log 640 5 1000 * J
/var/log/ppp.log 640 5 1000 * J
/var/log/secure.log 640 5 1000 * J
/var/log/system.log 640 7 * @T00 J
/var/log/wtmp 644 3 * @01T05 B
An dieser Stelle können folgende Parameter beeinflusst werden:
mode: Hier werden die Berechtigungen für das zu erzeugende Archivfile in der Oktalnotation für UNIX Berechtigungen angegeben.
count: Hier wird die Anzahl der zu archivierenden Dateien eingestellt. Bei erreichen der maximalen Anzahl an Archivdateien wird die älteste überschrieben.
size: Wird in dieser Spalte ein nummerischer Eintrag gemacht, wird so die maximale Dateigröße des Logfiles definiert. Bei erreichen der maximalen Dateigröße wird das Logfile archiviert und ein neues leeres Logfile erzeugt. Die Angabe ist in Kilobyte (KiB) vorzunehmen. Wir ein Asterix (*) in dieser Spalte verwendet, wird die Dateigröße nicht als Kriterium für eine Trimmung des Logfiles verwendet.
when: Hier wird der Zeitpunkt und/oder der Zeitintervall für eine Trimmung des Logfiles eingestellt. Ein Asterix an dieser Stelle bedeutet, dass die Trimmung nicht durch einen Zeitintervall sondern durch die Dateigröße angestoßen wird. Das Format für die Zeitangabe kann entweder durch das in ISO 8601
2) festgelegte Zeitformat oder kann auch eine eigene Notation, welche mit einem führenden »$« bzw »@« Zeichen beginnt, enthalten.
Beispiele:
$D0→ Rotiere jede Nacht um Mitternacht (entspricht @T00)
$D23 → Rotiere jeden Tag um 23:00 (entspricht @T23)
$W0D23 → Rotiere jede Woche am Sonntag um 23:00
$W5D16 → Rotiere jede Woche am Freitag um 16:00
$M1D0 → Rotiere jeden ersten Tag des Monats um Mitternacht (entspricht @01T00)
$M5D6 → Rotiere jeden fünften Tag im Monat um 06:00 (entspricht @05T06)
flags: Die Flags sind optional und können auch miteinander kombiniert werden. Zulässige Flags sind:
B → Wird bei speziellen Dateien, wie zB bei Binärdateien verwendet. Normalerweise platziert »newsyslog« einen Text im Logfile, welcher anzeigt wann und warum das Logfile getrimmt wurde. Durch den Schalter »B« wird dies verhindert.
C → Dadurch wird das Logfile erzeugt, falls es nicht bereits schon vorhanden ist. Bedingt die Startoption »-C«.
D → Dadurch wird das »UF_NODUMP« für das getrimmte Logfile gesetzt. Diese Option weist das »dump«-Utility
3) an, die getrimmte Datei nicht zu berücksichtigen.
J → Das getrimmte Logfile wird bzip2 komprimiert.
N → Zeigt an, dass kein Prozess darüber informiert werden muss, dass das betroffene Logfile getrimmt wird.
Z → Das getrimmte Logfile soll gzip komprimiert werden
Für weitere Optionen konsultieren Sie die Manpage von »newsyslog.conf«
»newsyslog« wird in der Default Konfiguration alle 30 Minuten durch launchd gestartet, dabei wird auch jedes mal die Konfigurationsdatei »newsyslog.conf« eingelesen. »launchd« kann hinsichtlich des Handlings von »newsyslog« in der Konfigurationsdatei »/System/Library/LaunchDaemons/com.apple.newsyslog.plist« eingestellt werden.
$ defaults read /System/Library/LaunchDaemons/com.apple.newsyslog
{
Label = "com.apple.newsyslog";
LowPriorityIO = 1;
Nice = 1;
ProgramArguments = (
"/usr/sbin/newsyslog"
);
StartCalendarInterval = {
Minute = 30;
};
}
Note: In der Manpage zu newsyslog wird fälschlicherweise behauptet, dass newsyslog durch cron gestartet wird:
»The newsyslog utility should be scheduled to run periodically by cron(8).«
was aber nicht stimmt. newsyslog wird in Mac
OS durch launchd gestartet. Vermutllich wurde die Manpage ohne Überarbeitung von BSD übernommen!
Verwandte Artikel:
-> Launchd Task Scheduler konfigurieren (Mac OSX)
— pronto 2012/05/08 10:00