Bien, tengo una conclusión similar a la de Darren, aunque un mecanismo de creación de perfiles ligeramente diferente (NB puede iniciar sesión lenta en Yosemite).
Esta es una manera de decirle a qué se está ejecutando cuando inicia una nueva ventana de inicio de sesión, utilizando el OS X sample comando del generador de perfiles.
Averigüe qué comando ejecuta un inicio de sesión normal
$ ps -ef | grep login
Verás algo como login -pfl username /bin/bash -c exec -la bash /bin/bash
Cree un nombre de archivo de script profile_login.sh
con el siguiente contenido agregando un
-c ""
hasta el final del comando descubierto para solicitar que bash vuelva inmediatamente, con contenidos como este:
login -pfl username /bin/bash -c exec -la bash /bin/bash -c "" &
sudo sample $! -mayDie # sample the above command
Hazlo ejecutable
$ chmod u+x profile_login.sh
y ejecútelo usando sudo (el comando sample
lo requiere)
$ sudo ./profile_login.sh
OK así que adelante y ejecútalo. Por ejemplo, ejecutando el comando purge
primero. En mi caja, tengo un gran gráfico de salida. Buscando las "ramas numeradas más grandes" (generalmente en la parte superior) vi los siguientes delincuentes más grandes :
Uno de algo llamado pam_start
que parece abrir imágenes pam auth lib lib
+ ! 1068 pam_start (in libpam.2.dylib) + 132 [0x7fff97295ab0]
+ ! : 1066 openpam_dynamic (in libpam.2.dylib) + 120 [0x7fff97293d14]
+ ! : | + ! 1042 coresymbolication_load_image(CSCppDyldSharedMemoryPage*, ImageLoader const*, unsigned long long) (in dyld) + 143 [0x7fff66725411]
+ ! : | + ! : 1042 mach_msg_trap (in dyld) + 10 [0x7fff6674a472]
y eso es seguido a veces por otro delincuente getlastlogxbyname
+ ! 583 getlastlogxbyname (in libsystem_c.dylib) + 212 [0x7fff92b3ef7a]
+ ! : 566 asl_file_open_read (in libsystem_asl.dylib) + 143 [0x7fff8c27030d]
+ ! : | 566 __open_nocancel (in libsystem_kernel.dylib) + 10 [0x7fff97b39012] + ! : | 566 __open_nocancel (in libsystem_kernel.dylib) + 10 [0x7fff97b39012]
Básicamente, hay dos delincuentes. Uno es pam
(algún tipo de sistema de autenticación) y el otro es asl
"detecte su último inicio de sesión". Entonces, aparentemente, simplemente eliminar los archivos /private/var/log/asl/*.asl
no es suficiente. La carga de pam es mucho más cara en mi máquina, de todos modos [SSD]. Siéntase libre de ejecutar el script anterior y ver si su sistema es el mismo. Curiosamente, el código fuente para estas llamadas de método también parece estar disponible en línea, por ejemplo, openpam_dynamic
Si sigo la respuesta de Darren y sustituyo mi preferencia de "shells open with" a algo que no sea / bin / bash, veo las siguientes líneas utilizadas para iniciar nuevas pestañas de terminales:
$ ps -ef | grep login
... login -pfql packrd /bin/bash -c exec -la bash /usr/bin/bash
Entonces, si ahora uso el mismo truco sample
en el nuevo comando de inicio de sesión
login -pfql username /bin/bash -c exec -la bash /usr/bin/bash -c "" &
sudo sample $! -mayDie
se genera un seguimiento de pila mucho más pequeño, el mayor infractor es:
+ 8 pam_end (in libpam.2.dylib) + 190 [0x7fff97294ebb]
+ ! 6 coresymbolication_unload_image(CSCppDyldSharedMemoryPage*, ImageLoader const*) (in dyld) + 143 [0x7fff6e0f634f]
Creo que esto se debe a que ahora se está utilizando el parámetro de inicio de sesión "-q". Al parecer, este parámetro omite la carga de los módulos pam y en busca del último tiempo de inicio de sesión (ambos infractores). De acuerdo con los documentos del comando login
, tocar el archivo ~/.hushlogin
debería hacer lo mismo, pero al parecer esto ya no funciona [al menos para mí con 10.10].
Entonces, en resumen, eliminar /private/var/log/asl/*.asl no es suficiente (en mi experimento, solo representó como máximo 1/3 de la desaceleración real, aunque si tenía más archivos allí podría dar cuenta de un mayor porcentaje, estoy seguro).
De todos modos, utilizando scripts similares, debería poder saber qué está causando que su máquina local se atasque y ver si la solución anterior se aplica a usted. Siéntete libre de comentar aquí.
ACTUALIZACIÓN: parece que coresymbolication_load_image
todavía puede llevar toneladas de tiempo, incluso cuando se invoca login -pfql
(probablemente un módulo de autenticación pam u otro es tener que "marcar" a un servidor central de inicio de sesión o algo extraño, así que esperar una respuesta de un tercero). Así que la única solución real que he encontrado es usar iTerm2 y cambiar las preferencias - > perfiles - > general - > Comando a /bin/bash
en su lugar.