如何在Mac OSX上加速Terminal.app或iTerm?


41

几小时不使用iTerm或Terminal时,每次启动它都需要10到20秒的时间才能返回提示。屏幕为空白,尽管可以键入,但实际上无法运行任何命令。

如果我退出了任何一个应用程序,则随后的启动(如果此后相对较快完成)将非常快。仅在应用程序未运行几个小时后,才会出现速度缓慢的情况。

我在MacBookPro上运行OSX 10.5.7。我在另一台计算机上具有完全相同的设置,没有速度下降。

有什么想法可以再次加快速度吗?


我喜欢两个随机数的匿名用户如何问和回答这个问题。我很少看到这种模式!:)
cregox 2011年

Answers:


39

尝试删除中的Apple系统日志文件/var/log/asl/

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

这帮了我大忙。


3
(ASL = Apple系统日志)
Arjan

+1。即使其他答案之一表明我有一个不平凡的.bashrc,它的工作原理也很迷人。
alesplin 2011年

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
Lri 2012年

30

另一个提示可能会有所帮助:

如果使用zsh ,请将启动外壳程序从默认更改/usr/bin/login为。/bin/bash -l/usr/bin/zsh

这可能会使您的Terminal / iTerm2快速启动!

  • 对于终端:首选项→启动:从“默认登录外壳”更改为“命令:/bin/bash -l

  • 对于iTerm2:首选项→配置文件→常规→命令:从“登录外壳”更改为“命令:/bin/bash -l


2
这大大加快了新标签页的加载。
Sindre Sorhus 2012年

1
不能说这对我有多大帮助。在1秒钟内解决了约6个月的终端性能缓慢问题。
山姆·斯特恩

/ bin / bash -l对我有用!
Phill Pafford

对于那些喜欢使用MacPorts bash的用户:/opt/local/bin/bash -l
Ioannis Filippidis

显然,使用/bin/bash -l优胜美地还不够(还可以吗?),有关其他细节,请参阅apple.stackexchange.com/questions/41743/…– rogerdpack 2015
20:42

9

我是否需要一定的声誉才能对帖子发表评论?无论如何,清除系统日志对我也有帮助,谢谢。我已尝试通过以下修补程序修补path_helper:gist.github.com/123525,如http://mjtsai.com/blog/2009/04/01/slow-opening-terminal-windows/(在此线程的前面引用),但无济于事。我收到一个神秘的错误。但是,该补丁应会加快terminal.app的启动速度。

另外:正如我提到的,清除日志对我而言是成功的诀窍,但是问题仍然存在,因为在我删除日志后,日志不断变大。我发现“调整” /etc/asl.conf给了我一个更永久的解决方案。修改是仅记录被分类为“关键”或比此更为关键的消息,而不是记录“通知”类别,并且每一个都比此更为关键。另外,我不理会来自ftp,邮件,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

1
欢迎来到SU。是的,需要50点声望,但是还有更多需要知道的内容,因此请立即访问superuser.com/faq!;-)
Arjan

7

几周前,我读了一篇文章:缓慢打开终端Windows

/usr/libexec/path_helper加载速度非常慢,/etc/paths如果您删除其中的所有条目/etc/paths并确保这些条目可用,则可以.bash_profile解决此问题。无论如何对我来说。


巧合的是有人重写了path_helper,可以在以下网址
Chealion

还是这样吗?path_helper似乎并不慢……
富兰克林·于

1

如果终端应用程序已加载,但是您还没有提示,则需要花一些时间来初始化外壳。

这可能意味着您.bashrc假设您使用bash)花费了太多时间。


这可能是我遇到的问题,您知道如何检查是否在使用bash的地方可以访问.bashrc文件吗?
alvincrespo 2011年

0

我的猜测是,随着时间的流逝,某些东西会占用大量内存。在一段时间不使用终端后启动终端时,必须通过将其内容换出到磁盘上来提供一些内存。如果您终止终端进程并相对快速地重新启动它,则该内存仍然可用,并且会快速启动。其他应用程序也应该发生这种情况。

您应该使用“活动监视器”监视内存使用情况,并查看是否可以知道运行情况。


他说终端窗口已打开,这意味着进程已加载。
Mike McQuaid)

1
@Mike,我不确定在显示“终端”窗口后是否已加载所有内容?但是,如果上述情况对于Terminal成立,那么任何程序都将缓慢启动。我认为终端不需要大量资源(Mac上为6.5 / 31.7真实/虚拟),所以@pmaiorana:终端在Mac上需要多少内存?
Arjan


0

打开/etc/profile并添加该行PATH="",如下所示:

if [ -x /usr/libexec/path_helper ]; then
    PATH=""
    eval `/usr/libexec/path_helper -s`
fi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.