cámara lenta cuando la Terminal ha estado abierta por algún tiempo

0

Cuando tengo Terminal.app abierto por algún tiempo (en su mayoría después de 2 a 3 horas), todo comienza a ser lento. Cuando escribo, hay un retraso para cada carácter y todas las aplicaciones se retrasan cuando me desplazo. Si reinicio la Terminal, desaparece y mi Mac vuelve a ser rápida 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 un desarrollador), así que me molesta tener que reiniciarlo.

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

Adjuntaré algunas capturas de pantalla del Monitor de actividad, tomadas mientras sucede, solo en caso de que ayude.

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

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 .*\)/;/;s/^\(Grants for .*\)/##  ##/;/##/{x;p;x;}'
}
    
pregunta swenedo 23.12.2014 - 00:04

2 respuestas

1

Vas a tener que ampliar tu búsqueda. No hay nada en tus capturas de pantalla que apunte a Terminal. Tampoco nada en mi experiencia: dejé que la Terminal funcionara durante días sin ningún efecto negativo.

Es posible que estés iniciando una tarea que está huyendo con el procesador. Puede configurar el Monitor de actividad para que muestre todos los procesos de forma jerárquica y realizar las tareas que se ejecutan directamente bajo un control más detallado de la Terminal, pero me inclino más a pensar que sea lo que sea, es algo que ha generado como un proceso separado (utilizando & al final de un comando).

¿Renunciar a Terminal le devuelve el rendimiento de inmediato? Eso indicaría que el proceso todavía se está ejecutando como una subtarea de Terminal.

De cualquier manera, configure el Monitor de actividad para que muestre Todos los procesos y ordene la lista por% CPU. Mira lo que flota en la parte superior.

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

ADDENDUM: Me acabo de dar cuenta de su comentario "... cuando tengo una sesión ssh abierta en uno de mis servidores". ¿También aceptas las sesiones de ssh entrantes? Es posible que estés bajo ataque. Alguien está intentando abrirte una sesión ssh y está adivinando contraseñas. Si están adivinando muy rápido, pueden poner a su máquina de rodillas.

Pensé en eso antes, porque he visto que eso sucede cuando habilito el inicio de sesión remoto y tengo una dirección IP visible públicamente. Una vez que los malos se den cuenta de que su puerto 22 está abierto desde la WAN (y lo harán, dentro de unas horas), lo cerrarán con los intentos de inicio de sesión. La solución (temporal) es deshabilitar el inicio de sesión remoto durante unos minutos. Se aburrirán y llamarán su atención en otro lugar, y tendrá un respiro de unas pocas horas hasta que otro hombre malo se dé cuenta del puerto abierto.

Pero usted dice que el problema desaparece tan pronto como sale de Terminal, lo que parece ser un problema diferente. A MENOS QUE tenga algún watchdog en su sistema que abra automáticamente el puerto 22 (es decir, habilite el inicio de sesión remoto) solo mientras el Terminal se está ejecutando, y lo cierra automáticamente cuando el Terminal se cierra. O imagino que podría ser posible configurar un firewall para que permita las conexiones entrantes al puerto 22 solo mientras exista una conexión saliente al puerto 22. O solo desde las direcciones remotas a las que tiene una conexión saliente y el servidor al que está conectado. La conexión a está infectada. Al salir de la Terminal, se cierran todas las sesiones de ssh, lo que haría que el firewall dejara de aceptar las sesiones entrantes de ssh, interrumpiendo el ataque. Sólo una conjetura.

Para ver si está bajo este tipo de ataque, abra el Monitor de actividad y filtre la lista de procesos para "sshd". Si ve muchos procesos sshd de corta duración, alguien está tratando de adivinar su contraseña. Incluso si no permite el acceso con contraseña, no lo saben y lo intentarán de todos modos.

    
respondido por el ganbustein 25.12.2014 - 04:46
0

Mi conjetura sería que tienes un búfer de retroceso muy, muy grande activo y que ocupa tu memoria.

Ver si

ayuda(debeaplicarseporseparadoencadaventana).Elvalorpredeterminadoparaestoes"memoria disponible". Es posible que desee cambiarlo en la configuración a un número adecuado de líneas en su lugar.

    
respondido por el Thorbjørn Ravn Andersen 27.02.2016 - 11:01

Lea otras preguntas en las etiquetas