¿Cómo puedo acelerar Terminal.app o iTerm en Mac OSX?

41

Cada vez que ejecuto iTerm o Terminal después de no usarlo durante unas horas, tarda entre 10 y 20 segundos en devolver un mensaje. La pantalla está en blanco, y aunque puedo escribir no puedo ejecutar ningún comando.

Si salgo de cualquiera de las aplicaciones, los lanzamientos posteriores (si se realizan relativamente poco después) son bastante rápidos. La lentitud solo parece ocurrir si la aplicación no se ejecutó durante unas horas.

Estoy ejecutando OSX 10.5.7 en una MacBookPro. Tengo exactamente la misma configuración en otra computadora, sin ralentizaciones.

¿Alguna idea de cómo acelerar las cosas de nuevo?

pmaiorana
fuente
Me encanta cómo esta pregunta es formulada y respondida por dos usuarios anónimos con números aleatorios. ¡No veo este patrón tan a menudo! :)
cregox

Respuestas:

39

Intente eliminar los archivos de registro del sistema Apple en /var/log/asl/:

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

Esto hizo el truco para mí.

usuario12544
fuente
3
(ASL = Registro del sistema de Apple)
Arjan
+1. Funcionó a las mil maravillas, aunque una de las otras respuestas sugirió que tengo un .bashrc no trivial.
alesplin
77
Como se señaló en OsXDaily , recomendaría usar en su sudo rm -rf /private/var/log/asl/*.asllugar porque es más seguro, ya que 1) solo elimina los archivos de registro y 2) evita la codificación en el directorio incorrecto y elimina todos los archivos.
Matthew Rankin
1
¿Alguien tiene alguna idea de por qué el tamaño de los registros del sistema afecta la rapidez con que se abre el terminal?
James McMahon
3
@JamesMcMahon El loginproceso parece leer todos los archivos y carpetas en el nivel superior de /var/log/asl. Intenta correr sudo opensnoop | grep /var/log/asl.
Lri
30

Otro consejo podría ser útil:

Cambie el shell de inicio de forma predeterminada /usr/bin/logina /bin/bash -l, o /usr/bin/zshsi usa zsh.

¡Eso podría hacer que su Terminal / iTerm2 se inicie a la velocidad de la luz!

  • Para Terminal: Preferencias → Inicio: cambie de "Shell de inicio de sesión predeterminado" a "Comando: /bin/bash -l"

  • Para iTerm2: Preferencias → Perfiles → General → Comando: Cambiar de "Shell de inicio de sesión" a "Comando: /bin/bash -l"

usuario150579
fuente
2
Esto aceleró la carga de pestañas nuevas considerablemente.
Sindre Sorhus
1
No puedo decir cuánto me ayudó esto. Resuelto ~ 6 meses de rendimiento de terminal lento en 1 segundo.
Sam Stern
/ bin / bash -l funciona para mi!
Phill Pafford
Para aquellos que prefieren usar la fiesta MacPorts:/opt/local/bin/bash -l
Ioannis Filippidis
aparentemente usar /bin/bash -lno es suficiente para yosemite (¿ya?), para otros detalles, ver apple.stackexchange.com/questions/41743/…
rogerdpack
9

¿Se requiere cierta reputación para comentar las publicaciones? De todos modos, borrar los registros del sistema también lo hizo por mí, gracias. He intentado parchear path_helper con el parche aquí: gist.github.com/123525, como se sugiere en un comentario en http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/ ( mencionado anteriormente en este hilo) pero fue en vano. Me sale un error críptico. Sin embargo, ese parche debería acelerar el lanzamiento de terminal.app.

Además: como mencioné, borrar los registros me ayudó, pero el problema continúa surgiendo a medida que los registros crecen continuamente después de que los eliminé. Encontré que "ajustar" /etc/asl.conf me ha dado una solución más permanente. La modificación consiste en registrar solo los mensajes que están categorizados como "críticos" o más críticos que eso, en lugar de registrar la categoría de "aviso" y cada vez más críticos que eso. Además, ignoro los mensajes de ftp, mail, local0, local1. Aquí hay una pasta de mi /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
fuente
1
Bienvenido a SU. Sí, se necesita 50 reputación, pero hay más para saber, ¡así que dirígete a superuser.com/faq de inmediato! ;-)
Arjan
7

De un artículo que leí hace un par de semanas: Windows de terminal de apertura lenta

/usr/libexec/path_helperla carga es terriblemente lenta /etc/pathsSi elimina todas las entradas /etc/pathsy se asegura de que esos elementos estén disponibles en .bash_profileeste, esto resolverá el problema. Lo hizo para mí de todos modos.

Chealion
fuente
Casualmente, alguien reescribió path_helper y está disponible en: github.com/mgprot/path_helper
Chealion
¿Sigue siendo el caso? path_helperno parece lento ...
Franklin Yu
1

Si la aplicación de terminal se ha cargado pero aún no tiene un mensaje, entonces su shell tarda un tiempo en inicializarse.

Esto probablemente significa que tiene demasiado o algo de tiempo en su .bashrc( suponiendo que lo usebash ).

Mike McQuaid
fuente
Este podría ser el problema que tengo, ¿sabe cómo puedo verificar si estoy usando bash donde puedo acceder al archivo .bashrc?
alvincrespo
0

Supongo que con el tiempo, algo está usando mucha memoria. Cuando inicia un terminal después de no usarlo durante un tiempo, debe tener disponible algo de memoria intercambiando su contenido en el disco. Si elimina el proceso del terminal y lo reinicia relativamente rápido, la memoria aún está disponible y se inicia rápidamente. Esto debería suceder también con otras aplicaciones.

Debe monitorear el uso de su memoria con Activity Monitor y ver si puede saber a dónde va.

KeithB
fuente
Dijo que la ventana de Terminal estaba abierta, lo que significa que el proceso se ha cargado.
Mike McQuaid
1
@ Mike, no estoy seguro de que una vez que se muestra la ventana Terminal, ¿todo se ha cargado? Aún así, si lo anterior fuera cierto para Terminal, cualquier programa se lanzaría lentamente. No creo que Terminal necesite muchos recursos (6.5 / 31.7 real / virtual en mi Mac), así que @pmaiorana: ¿cuánta memoria necesita Terminal en tu Mac?
Arjan
0

Aquísudo vi /etc/asl.conf se proporciona una solución más permanente mediante la edición .

Ioannis Filippidis
fuente
0

Abra /etc/profiley agregue la línea PATH=""para que se vea así:

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