41

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

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

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

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

8 ответов8

39

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

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

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

30

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

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

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

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

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

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
7

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

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

1

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

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

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
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .