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

18458
pmaiorana

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

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

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

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

41
Мне нравится, как на этот вопрос отвечают два анонимных пользователя со случайными числами. Я не вижу такой картины так часто! :) cregox 13 лет назад 0
Смотрите также http://apple.stackexchange.com/questions/41743/how-do-i-speed-up-new-terminal-tab-loading-time rogerdpack 9 лет назад 0

8 ответов на вопрос

39
user12544

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

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

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

(ASL = системный журнал Apple) Arjan 15 лет назад 3
Это тот, который работал. Спасибо! pmaiorana 15 лет назад 0
+1. Работал как шарм, хотя, как один из других ответов предложил мне нетривиальный .bashrc. alesplin 13 лет назад 0
Как указано в [OsXDaily] (http://osxdaily.com/2010/05/06/speed-up-a-slow-terminal-by-clearing-log-files/), я бы рекомендовал использовать `sudo rm Вместо этого -rf / private / var / log / asl / *. asl`, потому что это более безопасно, так как 1) удаляет только файлы журнала и 2) избегает записи в неправильный каталог и удаления всех файлов. Matthew Rankin 13 лет назад 7
У кого-нибудь есть идеи, почему размер системных журналов влияет на скорость открытия терминала? James McMahon 12 лет назад 1
@JamesMcMahon Процесс `login`, кажется, читает все файлы и папки на верхнем уровне` / var / log / asl`. Попробуйте запустить `sudo opensnoop | grep / var / log / asl`. user495470 12 лет назад 3
Ах, так что терминал не был оболочкой входа в систему, он открывался быстрее. Интересно. James McMahon 12 лет назад 0
Для чего эти журналы? Чем они отличаются от истории раковины? Nathan Long 11 лет назад 0
Вы также можете зайти в настройки Terminal.app и на вкладке «Автозагрузка» установить команду для своей оболочки вместо стандартного `login`. `login` явно читает логи, чтобы найти время последнего входа в систему. Michael Mior 11 лет назад 0
30
user150579

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

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

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

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

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

Это значительно ускорило загрузку новой вкладки. Sindre Sorhus 12 лет назад 2
Не могу сказать, насколько это помогло мне. Решено ~ 6 месяцев медленной работы терминала за 1 секунду. Sam Stern 11 лет назад 1
/ bin / bash -l у меня работает! Phill Pafford 10 лет назад 0
Для тех, кто предпочитает использовать MacPorts bash: `/ opt / local / bin / bash -l` Ioannis Filippidis 10 лет назад 0
очевидно, использование `/ bin / bash -l` недостаточно для yosemite (больше?), для других деталей, смотрите http://apple.stackexchange.com/questions/41743/how-do-i-speed-up- новый терминал закладок погрузо-время rogerdpack 9 лет назад 0
Удаление журнала - это нормально, но через некоторое время процесс входа в bash снова замедляется. `/ Bin / bash / -l` - более дальновидное решение. michelgotta 8 лет назад 0
и удаление asl и переход на `/ bin / bash -l` не сделали для меня ничего быстрее. какие-нибудь другие мысли для устранения проблем этого? Justin 7 лет назад 0
это изменение нарушило твою тему? Chris Hough 7 лет назад 0
9
tmadsen

Требуется ли определенная репутация для комментирования сообщений? В любом случае, очистка системных журналов сделала это и для меня, спасибо. Я попытался пропатчить 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 
Добро пожаловать в SU. Да, нужно 50 репутации, но это еще не все, так что отправляйтесь на http://superuser.com/faq прямо сейчас! ;-) Arjan 15 лет назад 1
7
Chealion

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

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

По совпадению кто-то переписал path_helper, и он доступен по адресу: http://github.com/mgprot/path_helper Chealion 15 лет назад 0
Это все еще так? `path_helper` не кажется медленным ... Franklin Yu 6 лет назад 0
1
Mike McQuaid

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

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

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

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

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

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

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

0
davidcondrey

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

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

Похожие вопросы