Langsames Terminal in OSX Mountain Lion

Das Starten des Terminals in OSX Mountain Lion dauerte bei mir immer sehr, sehr lange! Es dauerte immer in etwa 5-6 Sekunden. Langsam ging es mir auf die Nerven und nach einiger Recherche konnte ich die Ursache finden. Es lag an dem „neuen“ Apple System Logfilemanager (ASL) und dessen fragmentierte Dateien. Es gibt zwei Lösungen (und wahrscheinlich noch einige mehr, die ich aber nicht ausprobiert habe) die den Terminal Start wieder angenehm schnell machen!

1. Lösung ist eine alternative Shell zu verwenden. Damit wird der normale Loginprozess „umgegangen“. Dazu kann auch die normale Shell (/bin/bash) verwendet werden. Einfach einen symolischen Link in ‚/usr/bin‘ erstellen (sudo ln -s /bin/bash /usr/bin/bash) und die „neue“ Shell in ‚Start‘-Tab der Terminal Einstellung eintragen.

2. Lösung ist das Reduzieren (löschen) von alten ASL Dateien. Hierfür gibt’s eine gute Anleitung, bis auf das fehlen eines ’sudo‘ im vorletzten Befehls: http://www.dimitri.eu/mac-osx-slow-caused-by-aslmanager/

Ich selber habe die zweite Lösung gewählt und bin mit dem Ergebnis sehr zufrieden 🙂

Hier meine automatische Lösung per crontab

Dazu lege ich die folgende Datei an: /var/root/clearASL.sh.

sudo su
echo '#!/bin/sh

TODAY=`/bin/date +"%Y-%m-%d"`
ASL_TMP_DIR=/tmp/asl-$TODAY

if [ -d /var/log/asl/ ] ; then
echo "Stoppe den Syslog Demon"
/bin/launchctl stop com.apple.syslogd
/bin/launchctl stop com.apple.aslmanager
mkdir $ASL_TMP_DIR
echo "Verschiebe die Dateien nach $ASL_TMP_DIR"
cd /var/log/asl/
/bin/mv * "$ASL_TMP_DIR"
echo "Starte den Syslog Demon"
/bin/launchctl start com.apple.syslogd
echo "Fertig"
fi
' > /var/root/clearASL.sh
chmod 700 /var/root/clearASL.sh

Dann muss noch folgende Zeile in die root crontab erstellt werden:

sudo su
crontab -e
# In Vi eingeben (i-drücken und mit ESC, ':wq!' speichern)
0 */3 * * * /var/root/clearASL.sh > /tmp/asl_mover.txt

# Nochmal die aktuelle crontab kontrollieren. Das Skript sollte nun alle drei Stunden aufgerufen werden
crontab -l
0 */3 * * * /var/root/clearASL.sh > /tmp/asl_mover.txt
sh-3.2#