Como posso acelerar o Terminal.app ou o iTerm no Mac OSX?

41

Sempre que inicio o iTerm ou o Terminal depois de não usá-lo por algumas horas, leva de 10 a 20 segundos para retornar um prompt. A tela está em branco e, embora eu possa digitar, não consigo executar nenhum comando.

Se eu sair de um dos aplicativos, os lançamentos subsequentes (se realizados relativamente cedo depois) serão bastante rápidos. A lentidão parece ocorrer apenas se o aplicativo não estiver em execução por algumas horas.

Estou executando o OSX 10.5.7 em um MacBookPro. Eu tenho exatamente a mesma configuração em outro computador, sem lentidão.

Alguma idéia de como acelerar as coisas novamente?

pmaiorana
fonte
Eu amo como essa pergunta é feita e respondida por dois usuários anônimos com números aleatórios. Não vejo esse padrão com tanta frequência! :)
cregox 13/04
Veja também apple.stackexchange.com/questions/41743/…
rogerdpack 19/15

Respostas:

39

Tente excluir os arquivos de log do sistema Apple /var/log/asl/:

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

Isso fez o truque para mim.

user12544
fonte
3
(ASL = Log do sistema Apple)
Arjan
+1. Funcionou como um encanto, apesar de uma das outras respostas sugerir que eu tenho um .bashrc não trivial.
Alsplin
7
Como apontado no OsXDaily , eu recomendaria o uso, sudo rm -rf /private/var/log/asl/*.aslporque é mais seguro, pois 1) exclui apenas os arquivos de log e 2) evita o acesso ao diretório errado e a remoção de todos os arquivos.
Matthew Rankin
1
Alguém tem alguma idéia de por que o tamanho dos logs do sistema afeta a rapidez com que o terminal é aberto?
James McMahon
3
@JamesMcMahon O loginprocesso parece ler todos os arquivos e pastas no nível superior de /var/log/asl. Tente correr sudo opensnoop | grep /var/log/asl.
Lri 6/08/12
30

Outra dica pode ser útil:

Mude o shell de inicialização do padrão /usr/bin/loginpara /bin/bash -l, ou /usr/bin/zshse você usar zsh.

Isso pode fazer com que o seu Terminal / iTerm2 seja lançado na velocidade da luz!

  • Para Terminal: Preferências → Inicialização: Altere de "Shell de login padrão" para "Comando: /bin/bash -l"

  • Para iTerm2: Preferências → Perfis → Geral → Comando: Altere de "Shell de Login" para "Comando: /bin/bash -l"

user150579
fonte
2
Isso acelerou o carregamento de novas guias consideravelmente.
Sindre Sorhus
1
Não posso dizer o quanto isso me ajudou. Resolvido ~ 6 meses de desempenho terminal lento em 1 segundo.
Sam Stern
/ bin / bash -l funciona para mim!
Phill Pafford
Para aqueles que preferem usar o MacPorts bash:/opt/local/bin/bash -l
Ioannis Filippidis
aparentemente usar /bin/bash -lnão é suficiente para yosemite (mais?), para outros deatils, consulte apple.stackexchange.com/questions/41743/…
rogerdpack
9

Preciso de uma certa reputação para comentar nas postagens? De qualquer forma, limpar os logs do sistema também fez isso por mim, obrigado. Tentei corrigir o path_helper com o patch aqui: gist.github.com/123525, conforme sugerido em um comentário em http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/ ( mencionado anteriormente neste tópico), mas sem sucesso. Eu recebo um erro enigmático. No entanto, esse patch deve acelerar o lançamento do terminal.app.

Além disso: como mencionei, limpar os logs fez o truque para mim, mas o problema continua a surgir à medida que os logs aumentam continuamente depois que os removemos. Eu descobri que "ajustar" o /etc/asl.conf me deu uma solução mais permanente. A modificação é registrar apenas mensagens que são categorizadas como "críticas" ou mais críticas que isso, em oposição a registrar a categoria "aviso" e todas as mais críticas que isso. Além disso, desconsidero as mensagens de ftp, mail, local0, local1. Aqui está uma pasta do meu /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
fonte
1
Bem-vindo ao SU. Sim, são necessárias 50 reputações, mas há mais a saber, então acesse superuser.com/faq imediatamente! ;-)
Arjan
7

De um artigo que li há algumas semanas: Terminal de abertura lenta do Windows

/usr/libexec/path_helperé extremamente lento no carregamento /etc/pathsSe você remover todas as entradas /etc/pathse garantir que esses itens estejam disponíveis no seu sistema, .bash_profileisso resolverá o problema. Fez por mim de qualquer maneira.

Chealion
fonte
Por coincidência, alguém reescreveu path_helper e está disponível em: github.com/mgprot/path_helper
Chealion 26/10/2009
Ainda é o caso? path_helpernão parece lento…
Franklin Yu
1

Se o aplicativo do terminal foi carregado, mas você ainda não tem um prompt, então o shell está demorando um pouco para inicializar.

Isso provavelmente significa que você tem muito ou algo que consome tempo no seu .bashrc( supondo que você o usebash ).

Mike McQuaid
fonte
Esse pode ser o problema que estou tendo, você sabe como posso verificar se estou usando o bash onde posso acessar o arquivo .bashrc?
Alvincrespo 25/10
0

Meu palpite é que, com o tempo, algo está usando muita memória. Quando você inicia um terminal depois de não usá-lo por um tempo, é necessário disponibilizar alguma memória trocando seu conteúdo para o disco. Se você interromper o processo do terminal e reiniciá-lo com relativa rapidez, a memória ainda estará disponível e iniciará rapidamente. Isso deve acontecer com outros aplicativos também.

Você deve monitorar o uso da memória com o Activity Monitor e verificar se pode saber para onde está indo.

KeithB
fonte
Ele disse que a janela do Terminal estava aberta, o que significa que o processo foi carregado.
Mike McQuaid
1
@ Mike, não tenho certeza de que, uma vez que a janela do Terminal seja exibida, tudo tenha sido carregado? Ainda assim, se o exposto acima for verdadeiro para o Terminal, qualquer programa será iniciado lentamente. Não acho que o Terminal precise de muitos recursos (6,5 / 31,7 reais / virtuais no meu Mac), então @pmaiorana: quanta memória o Terminal precisa no seu Mac?
Arjan
0

Uma solução mais permanente por edição sudo vi /etc/asl.confé fornecida aqui .

Ioannis Filippidis
fonte
0

Abra /etc/profilee adicione a linha PATH=""para que fique assim:

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