Как я могу ускорить Terminal.app или iTerm на Mac OSX?

41

Каждый раз, когда я запускаю iTerm или Terminal, не используя его в течение нескольких часов, для возврата подсказки требуется от 10 до 20 секунд. На экране ничего нет, и хотя я могу печатать, я не могу выполнять какие-либо команды.

Если я закрою какое-либо приложение, последующие запуски (если они будут сделаны относительно скоро после этого) будут довольно быстрыми. Замедление происходит только в том случае, если приложение не запускалось в течение нескольких часов.

Я использую OSX 10.5.7 на MacBookPro. У меня точно такая же настройка на другом компьютере, без замедлений.

Есть идеи, как ускорить процесс?

pmaiorana
источник
Мне нравится, как на этот вопрос отвечают два анонимных пользователя со случайными числами. Я не вижу такой картины так часто! :)
cregox
Смотрите также apple.stackexchange.com/questions/41743/...
rogerdpack

Ответы:

39

Попробуйте удалить файлы системного журнала Apple в /var/log/asl/:

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

Это помогло мне.

user12544
источник
3
(ASL = Apple System Log)
Арджан,
+1. Работал как шарм, хотя, как один из других ответов предложил мне нетривиальный .bashrc.
Alesplin
7
Как указано в OsXDaily , я бы рекомендовал использовать sudo rm -rf /private/var/log/asl/*.aslвместо этого, потому что это безопаснее, так как 1) удаляет только файлы журнала и 2) избегает записи в неправильный каталог и удаления всех файлов.
Мэтью Рэнкин
1
У кого-нибудь есть идеи, почему размер системных журналов влияет на скорость открытия терминала?
Джеймс МакМэхон
3
@JamesMcMahon loginПроцесс, кажется, читает все файлы и папки на верхнем уровне /var/log/asl. Попробуйте запустить sudo opensnoop | grep /var/log/asl.
Лри
30

Другой совет может быть полезным:

Измените оболочку запуска с по умолчанию /usr/bin/loginна /bin/bash -lили, /usr/bin/zshесли вы используете zsh.

Это может заставить ваш терминал / iTerm2 запускаться со скоростью света!

  • Для терминала: «Настройки» → «Запуск»: измените «Оболочка входа в систему по умолчанию» на «Команда: /bin/bash -l»

  • Для iTerm2: «Настройки» → «Профили» → «Общие» → «Команда»: сменить «Оболочка входа» на «Команда: /bin/bash -l»

user150579
источник
2
Это значительно ускорило загрузку новой вкладки.
Синдре Сорхус
1
Не могу сказать, насколько это помогло мне. Решено ~ 6 месяцев медленной работы терминала за 1 секунду.
Сэм Стерн
/ bin / bash -l у меня работает!
Фил Паффорд
Для тех, кто предпочитает использовать MacPorts Bash:/opt/local/bin/bash -l
Иоаннис Филиппидис
очевидно /bin/bash -l, что для yosemite недостаточно использования (больше?), для других деталей см. apple.stackexchange.com/questions/41743/…
rogerdpack
9

Требуется ли определенная репутация для комментирования сообщений? В любом случае, очистка системных журналов сделала это и для меня, спасибо. Я попытался пропатчить path_helper с помощью патча здесь: gist.github.com/123525, как это предлагается в комментарии к http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/ ( упоминалось ранее в этой теме) но безрезультатно. Я получаю загадочную ошибку. Однако этот патч должен ускорить запуск Terminal.app.

дополнение: как я уже упоминал, очистка журналов принесла мне пользу, но проблема продолжает возникать, поскольку журналы постоянно увеличиваются после того, как я их удалил. Я обнаружил, что «настройка» /etc/asl.conf дала мне более постоянное решение. Модификация состоит в том, чтобы регистрировать только те сообщения, которые отнесены к категории «критические» или более важные, чем эта, в отличие от регистрации категории «уведомления» и каждой более важной, чем эта. Кроме того, я игнорирую сообщения от ftp, mail, local0, local1. Вот паста моего /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
источник
1
Добро пожаловать в SU. Да, нужно 50 репутации, но это еще не все, так что отправляйтесь на superuser.com/faq прямо сейчас! ;-)
Арьян
7

Из статьи, которую я прочитал пару недель назад: Медленное открытие терминала Windows

/usr/libexec/path_helperочень медленно загружается /etc/pathsЕсли вы удалите все записи /etc/pathsи убедитесь, что эти элементы доступны в вашем, .bash_profileэто решит проблему. Это все равно для меня.

Chealion
источник
По совпадению кто-то переписал path_helper, и он доступен по адресу: github.com/mgprot/path_helper
Chealion,
Это все еще так? path_helperне кажется медленным ...
Франклин Ю
1

Если приложение терминала загрузилось, но у вас еще нет приглашения, то ваша оболочка требует времени для инициализации.

Это, вероятно, означает, что у вас слишком много или что-то отнимает много времени .bashrc( если вы используетеbash ).

Майк Маккуэйд
источник
Это может быть проблема у меня, вы знаете, как я могу проверить, использую ли я bash, где я могу получить доступ к файлу .bashrc?
alvincrespo
0

Я предполагаю, что со временем что-то использует много памяти. Когда вы запускаете терминал после того, как какое-то время он не используется, необходимо сделать доступной некоторую память, перенеся ее содержимое на диск. Если вы уничтожите процесс терминала и перезапустите его относительно быстро, память все еще будет доступна и она быстро запустится. Это должно происходить и с другими приложениями.

Вы должны контролировать использование памяти с помощью Activity Monitor и посмотреть, сможете ли вы определить, куда он движется.

KeithB
источник
Он сказал, что окно терминала было открыто, что означает, что процесс загружен.
Майк МакКуэйд
1
@ Майк, я не уверен, что после того, как окно терминала отображается, все загрузилось? Тем не менее, если вышеупомянутое будет верно для терминала, то любая программа будет запускаться медленно. Я не думаю, что Терминалу нужно много ресурсов (6.5 / 31.7 реальных / виртуальных на моем Mac), поэтому @pmaiorana: сколько памяти нужно терминалу на вашем Mac?
Арьян
0

Более постоянное решение путем редактирования sudo vi /etc/asl.confпредоставляется здесь .

Иоаннис Филиппидис
источник
0

Откройте /etc/profileи добавьте строку, PATH=""чтобы она выглядела так:

if [ -x /usr/libexec/path_helper ]; then
    PATH=""
    eval `/usr/libexec/path_helper -s`
fi
davidcondrey
источник