Wie kann ich Terminal.app oder iTerm unter Mac OSX beschleunigen?

41

Jedes Mal, wenn ich iTerm oder Terminal starte, nachdem ich es einige Stunden lang nicht benutzt habe, dauert es zwischen 10 und 20 Sekunden, bis eine Eingabeaufforderung zurückgegeben wird. Der Bildschirm ist leer, und obwohl ich tippen kann, kann ich keine Befehle ausführen.

Wenn ich eine der beiden Anwendungen beende, sind nachfolgende Starts (falls relativ bald danach durchgeführt) recht schnell. Die Langsamkeit scheint nur aufzutreten, wenn die App einige Stunden lang nicht ausgeführt wurde.

Ich verwende OSX 10.5.7 auf einem MacBookPro. Ich habe genau das gleiche Setup auf einem anderen Computer, ohne Verzögerungen.

Irgendwelche Ideen, wie man die Dinge wieder beschleunigen kann?

pmaiorana
quelle
Ich mag es, wie diese Frage von zwei anonymen Benutzern mit Zufallszahlen gestellt und beantwortet wird. Ich sehe dieses Muster nicht so oft! :)
Cregox

Antworten:

39

Versuchen Sie, die Apple-Systemprotokolldateien zu löschen /var/log/asl/:

sudo rm /var/log/asl/*.asl

Das hat den Trick für mich getan.

user12544
quelle
3
(ASL = Apple System Log)
Arjan
+1. Arbeitete wie ein Zauber, obwohl eine der anderen Antworten darauf hinwies, dass ich ein nicht triviales .bashrc habe.
Alesplin
7
Wie bei OsXDaily bereits erwähnt , würde ich stattdessen die Verwendung empfehlen, sudo rm -rf /private/var/log/asl/*.aslda dies sicherer ist, da 1) nur die Protokolldateien gelöscht werden und 2) vermieden wird, dass das Cding in das falsche Verzeichnis verschoben und alle Dateien entfernt werden.
Matthew Rankin
1
Hat jemand eine Idee, warum die Größe der Systemprotokolle sich darauf auswirkt, wie schnell das Terminal geöffnet wird?
James McMahon
3
@JamesMcMahon Der loginProzess scheint alle Dateien und Ordner auf der obersten Ebene von zu lesen /var/log/asl. Versuche zu rennen sudo opensnoop | grep /var/log/asl.
Lri
30

Ein weiterer Tipp könnte hilfreich sein:

Ändern Sie die Start-Shell von Standard /usr/bin/loginauf /bin/bash -l, oder verwenden /usr/bin/zshSie zsh.

Das könnte Ihren Terminal / iTerm2 in Lichtgeschwindigkeit starten lassen!

  • Für Terminal: Einstellungen → Start: Wechseln Sie von "Standardanmeldeshell" zu "Befehl: /bin/bash -l"

  • Für iTerm2: Einstellungen → Profile → Allgemein → Befehl: Wechsel von "Anmeldeshell" zu "Befehl: /bin/bash -l"

user150579
quelle
2
Dies beschleunigte das Laden neuer Tabs erheblich.
Sindre Sorhus
1
Ich kann nicht sagen, wie sehr mir das geholfen hat. ~ 6 Monate langsame Terminalleistung in 1 Sekunde behoben.
Sam Stern
/ bin / bash -l funktioniert bei mir!
Phill Pafford
Für diejenigen, die die MacPorts-Bash bevorzugen:/opt/local/bin/bash -l
Ioannis Filippidis
anscheinend /bin/bash -lreicht die verwendung von yosemite nicht mehr aus (mehr?), für andere deatils siehe apple.stackexchange.com/questions/41743/…
rogerdpack
9

Benötige ich einen bestimmten Ruf, um Beiträge zu kommentieren? Trotzdem hat das Löschen der Systemprotokolle auch für mich funktioniert, danke. Ich habe versucht, path_helper mit dem Patch hier zu patchen: gist.github.com/123525, wie in einem Kommentar auf http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/ vorgeschlagen ( weiter oben in diesem Thread erwähnt), aber ohne Erfolg. Ich bekomme einen kryptischen Fehler. Dieser Patch sollte jedoch den Start von terminal.app beschleunigen.

Außerdem: Wie bereits erwähnt, hat das Löschen der Protokolle den Trick für mich getan, aber das Problem tritt weiterhin auf, da die Protokolle nach dem Entfernen ständig größer werden. Ich fand, dass "Tweaking" /etc/asl.conf mir eine dauerhaftere Lösung gegeben hat. Die Änderung besteht darin, nur Nachrichten zu protokollieren, die als "kritisch" oder kritischer als diese Kategorie eingestuft sind, im Gegensatz zur Protokollierungskategorie "Hinweis" und jeder weiteren, die kritischer als diese Kategorie ist. Außerdem ignoriere ich Nachrichten von ftp, mail, local0, local1. Hier ist eine Paste meiner /etc/asl.conf:

 ##
 # configuration file for syslogd and aslmanager
 ##

# redirect com.apple.message.domain to /var/log/DiagnosticMessages
? [T com.apple.message.domain] store_dir /var/log/DiagnosticMessages exclude_asldb

# authpriv messages are root/admin readable
? [= Facility authpriv] access 0 80

# remoteauth critical, alert, and emergency messages are root/admin readable
? [= Facility remoteauth] [<= Level critical] access 0 80

# broadcast emergency messages
? [= Level emergency] broadcast

# save kernel [PID 0] and launchd [PID 1] messages
? [<= PID 1] store

# save everything from emergency to notice
#? [<= Level notice] store
? [<= Level critical] store

# save lpr info level and above
#? [<= Level info] [= Facility lpr] store

# save all mail, ftp, local0, and local1 messages
#? [= Facility mail] store
#? [= Facility ftp] store
#? [= Facility local0] store
#? [= Facility local1] store
tmadsen
quelle
1
Willkommen bei SU. Ja, es werden 50 Reputationen benötigt, aber es gibt noch mehr zu wissen, also gehen Sie gleich zu superuser.com/faq ! ;-)
Arjan
7

Aus einem Artikel, den ich vor ein paar Wochen gelesen habe: Slow Opening Terminal Windows

/usr/libexec/path_helperDas Laden ist furchtbar langsam. /etc/pathsWenn Sie alle Einträge in entfernen /etc/pathsund sicherstellen, dass diese Elemente in Ihrem System verfügbar sind, .bash_profilewird das Problem behoben. Für mich hat es sowieso geklappt.

Chealion
quelle
Zufällig hat jemand path_helper umgeschrieben und es ist verfügbar unter: github.com/mgprot/path_helper
Chealion
Ist es immer noch so path_helperscheint nicht langsam ...
Franklin Yu
1

Wenn die Terminal-Anwendung geladen wurde, Sie jedoch noch keine Eingabeaufforderung haben, dauert es eine Weile, bis Ihre Shell initialisiert ist.

Dies bedeutet wahrscheinlich, dass Sie zu viel oder etwas Zeit in Ihrem .bashrc( vorausgesetzt, Sie verwendenbash ) haben.

Mike McQuaid
quelle
Dies könnte das Problem sein, das ich habe. Wissen Sie, wie ich überprüfen kann, ob ich mit bash auf die .bashrc-Datei zugreifen kann?
Alvincrespo
0

Ich vermute, dass mit der Zeit etwas viel Speicher verbraucht. Wenn Sie ein Terminal starten, nachdem Sie es eine Weile nicht verwendet haben, muss ein Teil des Arbeitsspeichers verfügbar sein, indem Sie seinen Inhalt auf die Festplatte auslagern. Wenn Sie den Terminalprozess beenden und relativ schnell neu starten, ist der Speicher noch verfügbar und wird schnell gestartet. Dies sollte auch bei anderen Anwendungen der Fall sein.

Sie sollten Ihre Speichernutzung mit dem Aktivitätsmonitor überwachen und prüfen, ob Sie erkennen können, wohin es geht.

KeithB
quelle
Er sagte, dass das Terminal-Fenster geöffnet war, was bedeutet, dass der Prozess geladen wurde.
Mike McQuaid
1
@Mike, ich bin mir nicht sicher, ob, sobald das Terminal-Fenster angezeigt wird, alles geladen wurde? Wenn dies jedoch für Terminal zutrifft, wird jedes Programm langsam gestartet. Ich glaube nicht, dass Terminal viele Ressourcen benötigt (6.5 / 31.7 real / virtual auf meinem Mac). @Pmaiorana: Wie viel Speicher benötigt Terminal auf Ihrem Mac?
Arjan
0

Eine dauerhaftere Lösung durch Bearbeitung sudo vi /etc/asl.confvorgesehen ist hier .

Ioannis Filippidis
quelle
0

Öffne /etc/profileund füge die Zeile PATH=""so hinzu, dass sie so aussieht:

if [ -x /usr/libexec/path_helper ]; then
    PATH=""
    eval `/usr/libexec/path_helper -s`
fi
Davidcondrey
quelle