Come posso velocizzare Terminal.app o iTerm su Mac OSX?


41

Ogni volta che lancio iTerm o Terminal dopo non averlo usato per alcune ore, ci vogliono da 10-20 secondi per restituire un messaggio. Lo schermo è vuoto e sebbene sia possibile digitare, in realtà non è possibile eseguire alcun comando.

Se chiudo entrambe le applicazioni, i lanci successivi (se eseguiti relativamente presto in seguito) sono abbastanza veloci. La lentezza sembra verificarsi solo se l'app non è stata in esecuzione per alcune ore.

Sto eseguendo OSX 10.5.7 su un MacBookPro. Ho la stessa configurazione esatta su un altro computer, senza rallentamenti.

Qualche idea su come velocizzare di nuovo le cose?


Adoro come questa domanda viene posta e risposta da due utenti anonimi con numeri casuali. Non vedo questo schema così spesso! :)
cregox,

Risposte:


39

Prova a eliminare i file di registro del sistema Apple in /var/log/asl/:

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

Questo ha fatto il trucco per me.


3
(ASL = Registro di sistema di Apple)
Arjan,

+1. Ha funzionato come un incantesimo anche se come una delle altre risposte mi ha suggerito di avere un .bashrc non banale.
alesplin,

7
Come sottolineato su OsXDaily , raccomanderei sudo rm -rf /private/var/log/asl/*.aslinvece di usarlo perché è più sicuro in quanto 1) elimina solo i file di registro e 2) evita di inserirli nella directory sbagliata e rimuovere tutti i file.
Matthew Rankin,

1
Qualcuno ha idea del perché la dimensione dei registri di sistema influisca sulla velocità di apertura del terminale?
James McMahon il

3
@JamesMcMahon Il loginprocesso sembra leggere tutti i file e le cartelle al livello superiore di /var/log/asl. Prova a correre sudo opensnoop | grep /var/log/asl.
Lri,

30

Un altro suggerimento potrebbe essere utile:

Cambia la shell di avvio da default /usr/bin/logina /bin/bash -l, o /usr/bin/zshse usi zsh.

Ciò potrebbe far partire il tuo terminale / iTerm2 alla velocità della luce!

  • Per terminale: Preferenze → Avvio: passa da "Shell di accesso predefinita" a "Comando: /bin/bash -l"

  • Per iTerm2: Preferenze → Profili → Generale → Comando: passa da "Shell di accesso" a "Comando: /bin/bash -l"


2
Ciò ha accelerato notevolmente il caricamento della nuova scheda.
Sindre Sorhus,

1
Non posso dire quanto mi abbia aiutato. Risolto ~ 6 mesi di prestazioni terminali lente in 1 secondo.
Sam Stern,

/ bin / bash -l funziona per me!
Phill Pafford,

Per coloro che preferiscono utilizzare la bash dei MacPorts:/opt/local/bin/bash -l
Ioannis Filippidis,

apparentemente l'utilizzo /bin/bash -lnon è abbastanza per yosemite (più?), per altri dettagli, vedi apple.stackexchange.com/questions/41743/…
rogerdpack

9

Ho bisogno di una certa reputazione per commentare i post? La cancellazione dei registri di sistema lo ha fatto comunque anche per me, grazie. Ho provato a patchare path_helper con la patch qui: gist.github.com/123525, come suggerito in un commento su http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/ ( indicato in precedenza in questo thread) ma senza risultati. Ottengo un errore criptico. Tuttavia, quella patch dovrebbe accelerare l'avvio di terminal.app.

Inoltre: come ho già detto, cancellare i registri ha fatto il trucco per me, ma il problema continua ad emergere man mano che i registri diventano sempre più grandi dopo che li ho rimossi. Ho scoperto che "tweaking" /etc/asl.conf mi ha dato una soluzione più permanente. La modifica consiste nel registrare solo i messaggi classificati come "critici" o più critici di quello, al contrario della registrazione della categoria "avviso" e ogni altro più critico di quello. Inoltre, ignoro i messaggi da ftp, mail, local0, local1. Ecco una copia del mio /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
Benvenuto in SU. Sì, sono necessarie 50 reputazione, ma c'è ancora molto da sapere, quindi vai subito su superuser.com/faq ! ;-)
Arjan,

7

Da un articolo che ho letto un paio di settimane fa: Terminale ad apertura lenta Windows

/usr/libexec/path_helperè terribilmente lento al caricamento /etc/pathsSe si rimuovono tutte le voci /etc/pathse si assicura che tali elementi siano disponibili nel proprio, .bash_profilequesto risolverà il problema. Lo ha fatto comunque per me.


Per coincidenza, qualcuno ha riscritto path_helper ed è disponibile su: github.com/mgprot/path_helper
Chealion,

È ancora il caso? path_helpernon sembra lento ...
Franklin Yu

1

Se l'applicazione terminale è stata caricata ma non hai ancora un prompt, l'inizializzazione richiede un po 'di tempo dalla shell.

Questo probabilmente significa che hai troppo o qualcosa che richiede molto tempo .bashrc( supponendo che tu usibash ).


Questo potrebbe essere il problema che sto riscontrando, sai come posso verificare se sto usando bash da dove posso accedere al file .bashrc?
alvincrespo,

0

La mia ipotesi è che nel tempo, qualcosa sta usando molta memoria. Quando si avvia un terminale dopo non averlo usato per un po ', è necessario rendere disponibile un po' di memoria scambiando il suo contenuto sul disco. Se si interrompe il processo del terminale e lo si riavvia relativamente rapidamente, la memoria è ancora disponibile e si avvia rapidamente. Questo dovrebbe accadere anche con altre applicazioni.

Dovresti monitorare l'utilizzo della memoria con Activity Monitor e vedere se riesci a capire dove sta andando.


Ha detto che la finestra del Terminale era aperta, il che significa che il processo è stato caricato.
Mike McQuaid,

1
@ Mike, non sono sicuro che una volta visualizzata la finestra Terminale, tutto sia stato caricato? Tuttavia, se quanto sopra fosse vero per Terminal, qualsiasi programma si avvierebbe lentamente. Non penso che Terminal abbia bisogno di molte risorse (6.5 / 31.7 reale / virtuale sul mio Mac), quindi @pmaiorana: quanta memoria ha bisogno Terminal sul tuo Mac?
Arjan,


0

Apri /etc/profilee aggiungi la linea PATH=""in questo modo:

if [ -x /usr/libexec/path_helper ]; then
    PATH=""
    eval `/usr/libexec/path_helper -s`
fi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.