0 votos

Mac lento cuando la Terminal lleva tiempo abierta

Cuando tengo Terminal.app abierta durante algún tiempo (sobre todo después de 2-3 horas), todo empieza a volverse lento. Cuando escribo hay un retraso para cada carácter, y todas las aplicaciones se retrasan cuando me desplazo. Si reinicio Terminal, desaparece y mi Mac vuelve a ser rápido y ágil. Pero los problemas vuelven después de algunas horas. Es especialmente malo cuando tengo una conexión ssh abierta a uno de mis servidores.

Uso mucho Terminal (soy desarrollador), así que me molesta tener que reiniciarlo.

¿Tienes alguna idea de cómo encontrar el problema? No puedo encontrar nada sobre esto al buscar en Google.

Adjuntaré algunas capturas de pantalla del Monitor de Actividad, tomadas mientras sucede, por si sirve de ayuda.

Mi máquina: Retina MacBook Pro, 2,6 GHz Intel Core i7, 16 GB de RAM.

CPUMEMORYDISKNETWORK

ACTUALIZACIÓN 1

Contenido de mis archivos de inicio de bash:

/etc/profile:

# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi

export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8

/etc/bashrc:

# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
   return
fi

PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
# Tell the terminal about the working directory at each prompt.
if [ "$TERM_PROGRAM" == "Apple_Terminal" ] && [ -z "$INSIDE_EMACS" ]; then
    update_terminal_cwd() {
        # Identify the directory using a "file:" scheme URL,
        # including the host name to disambiguate local vs.
        # remote connections. Percent-escape spaces.
    local SEARCH=' '
    local REPLACE='%20'
    local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
    printf '\e]7;%s\a' "$PWD_URL"
    }
    PROMPT_COMMAND="update_terminal_cwd; $PROMPT_COMMAND"
fi

~/.bash_profile:

export PATH=/usr/local/bin:$PATH
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

~/.bash_login: No tengo este archivo

~/.profile:

export JAVA_HOME=/Library/Java/Home

export CLICOLOR=1
export LSCOLORS=exfxcxdxbxegedabagacad

# MacPorts Installer addition on 2012-10-02_at_22:35:07: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

homebrew=/usr/local/bin:/usr/local/sbin
export PATH=$homebrew:$PATH

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

~/.bashrc:

mygrants() {
  mysql -B -N $@ -e "SELECT DISTINCT CONCAT(
    'SHOW GRANTS FOR \'', user, '\'@\'', host, '\';'
    ) AS query FROM mysql.user" | \
  mysql $@ | \
  sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}'
}

1voto

ganbustein Puntos 1016

Vas a tener que ampliar tu búsqueda. No hay nada en tus capturas de pantalla que apunte a Terminal. Ni nada en mi experiencia: he dejado que Terminal funcione durante días sin ningún efecto negativo.

Es posible que estés iniciando alguna tarea que se esté llevando por delante el procesador. Podrías configurar el Monitor de Actividad para que muestre todos los procesos de forma jerárquica, y examinar más de cerca las tareas que se ejecutan directamente bajo el Terminal, pero me inclino más a pensar que lo que sea es algo que has engendrado como un proceso separado (usando & al final de un comando).

¿Dejar el terminal te devuelve el rendimiento de inmediato? Eso indicaría que el proceso sigue ejecutándose como una subtarea de Terminal.

En cualquier caso, configura el Monitor de Actividad para que muestre Todos los Procesos, y ordena la lista por % de CPU. Vea lo que flota en la parte superior.

¿Hay algo inusual en su $PROMPT_COMMAND? Este es un comando que es ejecutado por el shell justo antes de mostrar el prompt. Me parece que es un lugar donde podría esconderse un perdedor de tiempo.

ADDENDUM: Acabo de notar tu comentario "...cuando tengo una sesión ssh abierta a uno de mis servidores". ¿También aceptas sesiones ssh entrantes? Es posible que estés bajo ataque. Alguien está tratando de abrir una sesión ssh hacia ti, y está adivinando las contraseñas. Si están adivinando muy rápido, pueden poner tu máquina de rodillas.

Se me ocurrió antes, porque he visto que eso ocurre cuando habilito el inicio de sesión remoto y tengo una dirección IP visible públicamente. Una vez que los chicos malos se dan cuenta de que tu puerto 22 está abierto desde la WAN (y lo harán, en cuestión de horas), lo machacarán con intentos de inicio de sesión. La solución (temporal) es desactivar el inicio de sesión remoto durante unos minutos. Se aburrirán y dirigirán su atención a otra parte, y tú tendrás un respiro de unas horas hasta que otro malhechor se dé cuenta del puerto abierto.

Pero dices que el problema desaparece en cuanto dejas el Terminal, lo que suena a un problema diferente. A MENOS que tengas algún perro guardián en tu sistema que abra automáticamente el puerto 22 (es decir, que habilite el Inicio de Sesión Remoto) sólo mientras se esté ejecutando la Terminal, y lo cierre automáticamente cuando la Terminal se cierre. O me imagino que podría ser posible configurar un firewall para que permita las conexiones entrantes al puerto 22 sólo mientras haya actualmente una conexión saliente al puerto 22. O sólo desde direcciones remotas a las que tengas una conexión saliente, y el servidor al que te estás conectando esté infectado. Salir de Terminal cierra todas tus sesiones ssh, lo que haría que el firewall dejara de aceptar sesiones entrantes ssh, rompiendo el ataque. Sólo una suposición.

Para ver si estás bajo este tipo de ataque, abre el Monitor de Actividad y filtra la lista de procesos por "sshd". Si ves muchos procesos sshd de muy corta duración, alguien está tratando de adivinar tu contraseña. Incluso si no permites el acceso con contraseña, no lo saben y lo intentarán de todos modos.

0voto

DHayes Puntos 1878

Mi suposición sería que tienes un búfer de scrollback muy, muy grande activo y que ocupa tu memoria.

Ver si

alt-command-K

ayuda (debe aplicarse por separado en cada ventana). El valor por defecto para esto es "memoria disponible". Es posible que desee cambiarlo en la configuración a un número adecuado de líneas en su lugar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X