Comment puis-je accélérer Terminal.app ou iTerm sur Mac OSX?


41

Chaque fois que je lance iTerm ou Terminal après ne pas l'avoir utilisé pendant quelques heures, 10 à 20 secondes sont nécessaires pour retourner une invite. L'écran est vide et, bien que je puisse taper, je ne peux exécuter aucune commande.

Si je quitte l’une ou l’autre des applications, les lancements suivants (s’ils sont effectués assez rapidement par la suite) sont assez rapides. La lenteur ne semble se produire que si l'application ne fonctionnait pas pendant quelques heures.

J'utilise OSX 10.5.7 sur un MacBookPro. J'ai exactement la même configuration sur un autre ordinateur, sans ralentissement.

Des idées pour accélérer encore les choses?


J'aime la façon dont cette question est posée et répondue par deux utilisateurs anonymes avec des nombres aléatoires. Je ne vois pas ce modèle si souvent! :)
cregox

Réponses:


39

Essayez de supprimer les fichiers journaux du système Apple dans /var/log/asl/:

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

Cela a fait le tour pour moi.


3
(ASL = Apple System Log)
Arjan

+1 Travaillé comme un charme même si, comme l’a suggéré l’une des réponses, j’ai un fichier .bashrc non trivial.
Alesplin

7
Comme indiqué sur OsXDaily , je recommanderais sudo rm -rf /private/var/log/asl/*.aslplutôt d' utiliser cette solution , car elle est plus sûre 1) ne supprime que les fichiers journaux et 2) évite de se connecter au mauvais répertoire et de supprimer tous les fichiers.
Matthew Rankin

1
Quelqu'un sait-il pourquoi la taille des journaux système affecte la rapidité avec laquelle le terminal s'ouvre?
James McMahon

3
@JamesMcMahon Le loginprocessus semble lire tous les fichiers et dossiers du niveau supérieur de /var/log/asl. Essayez de courir sudo opensnoop | grep /var/log/asl.
Lri

30

Un autre conseil pourrait être utile:

Remplacez le shell de démarrage par défaut /usr/bin/loginpar /bin/bash -lou /usr/bin/zshsi vous utilisez zsh.

Cela pourrait rendre votre terminal / iTerm2 lancer à la vitesse de la lumière!

  • Pour le terminal: Préférences → Démarrage: remplacez "Shell de connexion par défaut" par "Commande: /bin/bash -l"

  • Pour iTerm2: Préférences → Profils → Général → Commande: Remplacez "Login Shell" par "Commande: /bin/bash -l".


2
Cela accélère considérablement le chargement des onglets.
Sindre Sorhus

1
Je ne peux pas dire à quel point cela m'a aidé. Résolu ~ 6 mois de performances terminales lentes en 1 seconde.
Sam Stern

/ bin / bash -l fonctionne pour moi!
Phill Pafford

Pour ceux qui préfèrent utiliser le MacPorts bash:/opt/local/bin/bash -l
Ioannis Filippidis

apparemment utiliser /bin/bash -ln'est pas suffisant pour yosemite (plus?), pour d'autres deatils, voir apple.stackexchange.com/questions/41743/…
rogerdpack

9

Ai-je besoin d'une certaine réputation pour commenter des publications? Quoi qu'il en soit, effacer les journaux du système l'a également fait pour moi, merci. J'ai essayé de patcher path_helper avec le correctif ici: gist.github.com/123525, comme suggéré dans un commentaire sur http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/ ( référencé plus tôt dans ce fil) mais en vain. Je reçois une erreur cryptique. Cependant, ce correctif devrait accélérer le lancement de terminal.app.

Ajout: comme je l'ai mentionné, effacer les journaux a fait l'affaire pour moi, mais le problème continue de surgir à mesure que les journaux grossissent continuellement après que je les ai supprimés. J'ai trouvé que "peaufiner" /etc/asl.conf m'a apporté une solution plus permanente. La modification consiste à ne consigner que les messages classés dans la catégorie "critiques" ou plus critiques, par opposition à la journalisation dans la catégorie "avis" et encore plus critiques. En outre, je ne tiens pas compte des messages de ftp, mail, local0, local1. Voici un extrait de mon fichier /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
Bienvenue chez SU. Oui, 50 points de réputation sont nécessaires, mais il y a plus à savoir, alors rendez-vous immédiatement sur superuser.com/faq ! ;-)
Arjan

7

D'après un article que j'ai lu il y a quelques semaines: Terminal à ouverture lente Windows

/usr/libexec/path_helperest terriblement lent au chargement /etc/pathsSi vous supprimez toutes les entrées /etc/pathset que vous vous assurez que ces éléments sont disponibles, .bash_profilecela résoudra le problème. C'est fait pour moi quand même.


Par coïncidence, quelqu'un a réécrit path_helper et il est disponible à l' adresse suivante
Chealion

Est-ce toujours le cas? path_helperne semble pas lent…
Franklin Yu

1

Si l'application de terminal est chargée mais que vous n'avez pas encore d'invite, votre shell prend un certain temps pour s'initialiser.

Cela signifie probablement que vous en avez trop ou que vous prenez trop de temps .bashrc(en supposant que vous l'utilisiezbash ).


Savez-vous comment je peux vérifier si j'utilise bash où je peux accéder au fichier .bashrc?
Alvincrespo

0

À mon avis, avec le temps, quelque chose utilise beaucoup de mémoire. Lorsque vous démarrez un terminal après ne pas l'avoir utilisé pendant un certain temps, vous devez libérer de la mémoire en échangeant son contenu sur le disque. Si vous supprimez le processus de terminal et le redémarrez relativement rapidement, la mémoire est toujours disponible et il démarre rapidement. Cela devrait arriver aussi avec d'autres applications.

Vous devez surveiller votre utilisation de la mémoire avec Activity Monitor et voir si vous pouvez savoir où elle va.


Il a dit que la fenêtre du terminal était ouverte, ce qui signifie que le processus a été chargé.
Mike McQuaid

1
@ Mike, je ne suis pas sûr qu'une fois la fenêtre du terminal affichée, tout est chargé? Néanmoins, si ce qui précède était vrai pour Terminal, alors tout programme serait lancé lentement. Je ne pense pas que Terminal ait besoin de beaucoup de ressources (6.5 / 31.7 réel / virtuel sur mon Mac), alors @pmaiorana: de combien de mémoire Terminal a-t-il besoin sur votre Mac?
Arjan


0

Ouvrez /etc/profileet ajoutez la ligne PATH=""afin qu'elle ressemble à ceci:

if [ -x /usr/libexec/path_helper ]; then
    PATH=""
    eval `/usr/libexec/path_helper -s`
fi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.