Jak przyspieszyć Terminal.app lub iTerm na Mac OSX?


41

Za każdym razem, gdy uruchamiam iTerm lub Terminal po nieużywaniu go przez kilka godzin, odebranie monitu zajmuje od 10 do 20 sekund. Ekran jest pusty i chociaż mogę pisać, nie mogę uruchomić żadnych poleceń.

Jeśli wyjdę z dowolnej aplikacji, kolejne uruchomienia (jeśli zostaną wykonane stosunkowo szybko później) są dość szybkie. Powolność pojawia się tylko wtedy, gdy aplikacja nie działała przez kilka godzin.

Używam OSX 10.5.7 na MacBookPro. Mam taką samą konfigurację na innym komputerze, bez spowolnień.

Jakieś pomysły, jak ponownie przyspieszyć?


Uwielbiam sposób, w jaki to pytanie jest zadawane i udzielane przez dwóch anonimowych użytkowników z losowymi liczbami. Nie widzę tego wzoru tak często! :)
cregox,

Odpowiedzi:


39

Spróbuj usunąć pliki dziennika systemu Apple w /var/log/asl/:

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

To załatwiło sprawę.


3
(ASL = Apple System Log)
Arjan

+1. Działało jak urok, chociaż jedna z pozostałych odpowiedzi sugerowała, że ​​mam nietrywialny plik .bashrc.
alesplin,

7
Jak wskazano w OsXDaily , zalecam użycie sudo rm -rf /private/var/log/asl/*.aslzamiast tego, ponieważ jest bezpieczniejsze, ponieważ 1) usuwa tylko pliki dziennika i 2) unika dodawania do niewłaściwego katalogu i usuwania wszystkich plików.
Matthew Rankin

1
Czy ktoś ma pojęcie, dlaczego wielkość dzienników systemowych wpływa na szybkość otwierania terminala?
James McMahon,

3
@JamesMcMahon loginProces wydaje się czytać wszystkie pliki i foldery na najwyższym poziomie /var/log/asl. Spróbuj uruchomić sudo opensnoop | grep /var/log/asl.
Lri

30

Pomocna może być kolejna wskazówka:

Zmień powłokę startową z domyślnej /usr/bin/loginna /bin/bash -llub /usr/bin/zshjeśli używasz zsh.

To może sprawić, że Twój terminal / iTerm2 uruchomi się z niewielką prędkością!

  • W terminalu: Preferencje → Uruchamianie: Zmień z „Domyślnej powłoki logowania” na „Polecenie: /bin/bash -l

  • Dla iTerm2: Preferencje → Profile → Ogólne → Polecenie: zmiana z „Powłoki logowania” na „Polecenie: /bin/bash -l


2
Przyspieszyło to znacznie ładowanie nowej karty.
Sindre Sorhus,

1
Nie mogę powiedzieć, jak bardzo mi to pomogło. Rozwiązano ~ 6 miesięcy wolnej wydajności terminala w ciągu 1 sekundy.
Sam Stern

/ bin / bash -l działa dla mnie!
Phill Pafford,

Dla tych, którzy wolą korzystać z basha MacPorts:/opt/local/bin/bash -l
Ioannis Filippidis

najwyraźniej używanie /bin/bash -lnie wystarcza dla yosemite (już?), dla innych deatilów
rogerdpack

9

Czy potrzebuję pewnej reputacji, aby komentować posty? W każdym razie wyczyszczenie dzienników systemowych zrobiło to również dla mnie, dzięki. Próbowałem załatać path_helper za pomocą łatki tutaj: gist.github.com/123525, jak sugerowano w komentarzu na http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/ ( wspomniane wcześniej w tym wątku), ale bezskutecznie. Dostaję tajemniczy błąd. Ta łatka powinna jednak przyspieszyć uruchomienie terminal.app.

dodatek: Jak wspomniałem, wyczyszczenie dzienników pomogło mi, ale problem nadal się pojawia, gdy dzienniki stale rosną po ich usunięciu. Odkryłem, że „poprawianie” /etc/asl.conf dało mi bardziej trwałe rozwiązanie. Modyfikacja polega na rejestrowaniu tylko wiadomości sklasyfikowanych jako „krytyczne” lub bardziej krytyczne niż te, w przeciwieństwie do rejestrowania kategorii „powiadomienie” i co bardziej krytyczne. Ponadto ignoruję wiadomości z ftp, mail, local0, local1. Oto pasta mojego /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

1
Witamy w SU. Tak, potrzebna jest 50 reputacja, ale jest więcej do zrobienia, więc od razu przejdź do superuser.com/faq ! ;-)
Arjan

7

Z artykułu, który przeczytałem kilka tygodni temu: Powolne otwieranie terminalu Windows

/usr/libexec/path_helperjest strasznie powolny przy ładowaniu /etc/pathsJeśli usuniesz wszystkie wpisy /etc/pathsi upewnisz się, że te elementy są dostępne .bash_profile, rozwiąże to problem. I tak mi się udało.


Przypadkowo ktoś przepisał path_helper i jest on dostępny na stronie: github.com/mgprot/path_helper
Chealion

Czy nadal tak jest? path_helpernie wydaje się powolny…
Franklin Yu

1

Jeśli aplikacja terminala została załadowana, ale nie masz jeszcze monitu, zainicjowanie powłoki zajmuje trochę czasu.

Prawdopodobnie oznacza to, że masz za dużo lub czasochłonność .bashrc( zakładając, że używaszbash ).


Może to być problem, który mam, czy wiesz, jak mogę sprawdzić Jeśli używam bash, gdzie mogę uzyskać dostęp do pliku .bashrc?
alvincrespo

0

Domyślam się, że z czasem coś zużywa dużo pamięci. Podczas uruchamiania terminala po dłuższym nieużywaniu go należy udostępnić trochę pamięci, zamieniając jego zawartość na dysk. Jeśli zabijesz proces terminalowy i uruchomisz go stosunkowo szybko, pamięć jest nadal dostępna i szybko się uruchamia. Powinno tak się zdarzyć również w przypadku innych aplikacji.

Powinieneś monitorować zużycie pamięci za pomocą Monitora aktywności i sprawdzać, czy możesz powiedzieć, dokąd zmierza.


Powiedział, że okno terminala jest otwarte, co oznacza, że ​​proces został załadowany.
Mike McQuaid

1
@Mike, nie jestem pewien, czy po wyświetleniu okna terminalu wszystko się załadowało? Mimo to, jeśli powyższe byłoby prawdziwe w przypadku Terminala, wówczas dowolny program uruchamiałby się powoli. Nie sądzę, że Terminal potrzebuje dużo zasobów (6.5 / 31.7 real / virtual na moim Macu), więc @pmaiorana: ile pamięci potrzebuje Terminal na twoim Macu?
Arjan


0

Otwórz /etc/profilei dodaj linię, PATH=""aby wyglądała następująco:

if [ -x /usr/libexec/path_helper ]; then
    PATH=""
    eval `/usr/libexec/path_helper -s`
fi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.