V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
homfen
V2EX  ›  程序员

shell 打开很慢是啥原因

  •  
  •   homfen ·
    homfen · 2016-11-21 11:08:57 +08:00 · 8796 次点击
    这是一个创建于 2684 天前的主题,其中的信息可能已经有所发展或是发生改变。

    shell

    如图,打开 iterm 有个延迟,才能输入,用了 oh-my-zsh ,是啥原因? log 太多了?

    61 条回复    2017-10-18 14:29:01 +08:00
    zhouzm
        1
    zhouzm  
       2016-11-21 11:17:20 +08:00   ❤️ 1
    原因就是你用了 oh-my-zsh

    你可以试试 Prezto https://github.com/sorin-ionescu/prezto
    mgna17
        2
    mgna17  
       2016-11-21 11:21:29 +08:00
    标签上的那个 grep 是哪来的
    homfen
        3
    homfen  
    OP
       2016-11-21 11:50:05 +08:00
    @mgna17 这个 grep 应该是 oh-my-zsh 搞的吧
    homfen
        4
    homfen  
    OP
       2016-11-21 11:50:22 +08:00
    @zhouzm ok ,我试试
    fyibmsd
        5
    fyibmsd  
       2016-11-21 12:03:24 +08:00
    `rm -rf /var/log/asl/*`
    homfen
        6
    homfen  
    OP
       2016-11-21 13:44:15 +08:00
    @fyibmsd log 删了也没什么效果
    iwege
        7
    iwege  
       2016-11-21 14:54:47 +08:00
    prezto 貌似也有这个问题。
    Twinkle
        8
    Twinkle  
       2016-11-21 14:58:37 +08:00
    我要 3-4s 左右 /_\
    shyling
        9
    shyling  
       2016-11-21 15:00:05 +08:00 via iPhone
    因为 oh_my_sh 很卡。。。个人觉得 fish 挺快
    lukertty
        10
    lukertty  
       2016-11-21 15:13:29 +08:00
    一般第一次都要 10 秒,接下来 4 秒左右。。 zsh
    guoziyan
        11
    guoziyan  
       2016-11-21 15:17:14 +08:00
    bash 秒开
    xz
        12
    xz  
       2016-11-21 15:28:44 +08:00   ❤️ 1
    rm -rf /*
    我去贴吧帮你问了,听说需要运行一下这个命令
    Jobin0528
        13
    Jobin0528  
       2016-11-21 15:29:10 +08:00 via iPhone
    @zhouzm 用了,也快不了多少,
    ynyounuo
        14
    ynyounuo  
       2016-11-21 15:30:39 +08:00
    配置很重的缘故呀 - -
    我的比你的慢多了
    ynyounuo
        15
    ynyounuo  
       2016-11-21 15:34:56 +08:00
    可以用 -xv 看看你的配置究竟有多重
    ppwangs
        16
    ppwangs  
       2016-11-21 15:38:33 +08:00
    不行就换回 bash 吧,目前我还没找到非用 zsh 不可的原因
    dodo20120
        17
    dodo20120  
       2016-11-21 15:44:27 +08:00
    请先检查有没有安装 nvm , 再检查有没有安装 rbenv ,两个都没有?那检查其它的吧,有这两个其中一个在,你都快不起来
    zhouzm
        18
    zhouzm  
       2016-11-21 15:45:16 +08:00
    其实,楼主你这 1 秒左右的延迟在 zsh 应用于已经属于"快"的了。如果你真的对这样的延迟很敏感可以试试
    antigen-hs: https://github.com/Tarrasch/antigen-hs ,这个是我下面提到的 antigen 的速度增加版,号称延迟小于 0.1s

    @lukertty
    @Twinkle 3~4s 也太慢了,建议试试 antigen: https://github.com/zsh-users/antigen , Antigen is to zsh, what Vundle is to vim
    antigen 可以只加载你自己的需要的模块,同时还有 cache 功能,第二次打开时间能和楼主图上效果差不多 1s 左右。
    dodo20120
        19
    dodo20120  
       2016-11-21 15:51:30 +08:00
    @zhouzm 这个快慢和加载的东西有很大关系,我自己用的 nvm 和 rbenv 两项,随便一个就拖个 1s 以上,特别是 nvm ,用延迟加载又不方便
    bjzhou1990
        20
    bjzhou1990  
       2016-11-21 15:59:14 +08:00   ❤️ 1
    慢是因为启动加载项太多,如果有 nvm 一定要删,这东西太慢了,启动命令改成 zsh -x 看下卡在什么地方了
    dodo20120
        21
    dodo20120  
       2016-11-21 16:02:03 +08:00
    @bjzhou1990 有没有 nvm 替代品?以前是 rbenv 慢,现在 rbenv 好多了,这 nvm 不能忍了要
    bjzhou1990
        22
    bjzhou1990  
       2016-11-21 16:04:36 +08:00
    @dodo20120 nvm 是用来更新 node ?直接 brew 不就好了
    zhouzm
        23
    zhouzm  
       2016-11-21 16:14:55 +08:00
    @dodo20120 你用的是 antigen 吗?我刚才试了一下,不加载 nvm 和 rbenv 约 1.5s ,加载大约 2s ,都是 antigen
    reset 后运行一次,测试第二次的时间。

    加载了以下模块:
    antigen use oh-my-zsh
    antigen bundle pip
    antigen bundle nvm
    antigen bundle rbenv
    antigen bundle autojump
    antigen bundle brew
    antigen bundle brew-cask
    antigen bundle colored-man
    antigen bundle z
    antigen bundle zsh-users/zsh-syntax-highlighting
    antigen bundle zsh-users/zsh-history-substring-search ./zsh-history-substring-search.zsh
    antigen theme agnoster
    antigen apply
    singlepig
        24
    singlepig  
       2016-11-21 16:24:40 +08:00
    有同感,感觉是插件装多了,一些用不到的功能可以禁用掉。
    henryshen233
        25
    henryshen233  
       2016-11-21 16:44:20 +08:00 via iPhone
    要更新了吧
    dodo20120
        26
    dodo20120  
       2016-11-21 16:48:27 +08:00
    @zhouzm 用的 oh-my-zsh, nvm 慢是众人所知的,直接用 bash 我都觉得这货慢,不过将就用吧
    zhx1991
        27
    zhx1991  
       2016-11-21 17:06:17 +08:00
    zsh 加载东西多

    但是这个不是很影响吧? 谁成天关闭打开 shell
    wxcszh
        28
    wxcszh  
       2016-11-21 17:15:15 +08:00
    我的需要 3 秒多。。 oh-my-zsh 加载东西有点多。。。
    homfen
        29
    homfen  
    OP
       2016-11-21 17:21:19 +08:00
    @dodo20120 还真装了 nvm
    homfen
        30
    homfen  
    OP
       2016-11-21 17:24:28 +08:00
    @zhouzm 这个图貌似加速过了,实际也是 3~4 秒,换成 prezto 后现在是 1 秒左右,可以接受了
    homfen
        31
    homfen  
    OP
       2016-11-21 17:27:42 +08:00
    @bjzhou1990 nvm 这么坑,主要是 node 版本切换方便,不然也不装了
    homfen
        32
    homfen  
    OP
       2016-11-21 17:36:35 +08:00
    就是 nvm 搞的鬼, prezto 加了 nvm 的配置也变慢了
    knightdf
        33
    knightdf  
       2016-11-21 17:44:30 +08:00
    请问这个 1s,2s,3s 有什么意义.....?常年不关 shell 挂个 tmux 的重来不关心也没感觉
    ynyounuo
        34
    ynyounuo  
       2016-11-21 17:46:05 +08:00
    @homfen nvm 众所周知的慢啊
    只需要版本切换的话,用 n 就好
    cxbig
        35
    cxbig  
       2016-11-21 17:51:25 +08:00
    加载的东西太多,建议把不常用的 plugin 去掉。
    mcfog
        36
    mcfog  
       2016-11-21 18:17:55 +08:00
    fish 秒开,而且不需要什么配置开箱即用

    当然,别装 oh-my-fish
    dodo20120
        37
    dodo20120  
       2016-11-21 21:16:32 +08:00
    @mcfog
    以前用了阵 fish ,但不支持 bash
    lilydjwg
        38
    lilydjwg  
       2016-11-21 21:27:20 +08:00
    我以前历史记录 10w 行,结果加载很慢,改成 2w 了。现在基本能在 0.2 秒内启动。

    你可以 zsh -x 然后看看哪里比较慢。我忘记了当时我是怎么找到瓶颈的……
    lilydjwg
        39
    lilydjwg  
       2016-11-21 21:31:24 +08:00
    PS: 我不用 oh-my-zsh ,东西太多,怕太慢或者出现意外的行为。我曾经对我的 zshrc 优化过,能少用外部命令就少用外部命令。现在 zsh 从启动到看到第一个提示符,共有六次 execve ,一次 zsh (自己),两次 uname ,一次 stty ,一次 systemctl --version ,一次 git 。根本不用 grep ,都用内建的正则+重定向搞定了。
    lilydjwg
        40
    lilydjwg  
       2016-11-21 21:39:51 +08:00
    @ppwangs zsh 又快又安全*补全又强大。另见 [http://www.slideshare.net/jaguardesignstudio/why-zsh-is-cooler-than-your-shell-16194692](Why Zsh is Cooler than Your Shell)。

    * 指的是粘贴多行文本也不会立即执行,使得用户有机会确认。特别是从网页复制命令的时候,网页可以把部分命令隐藏起来,但是[会复制到]( https://web.archive.org/web/20150629051828/http://www.soimort.org/posts/154/)。不用插件的话,此功能至少需要 zsh 5.0 。
    rashawn
        41
    rashawn  
       2016-11-21 23:42:30 +08:00 via iPhone
    这个常年不用关的 就是用 tmux 的时候推送传不到系统通知那里
    ceclinux
        42
    ceclinux  
       2016-11-22 02:16:50 +08:00
    我也觉得这个速度正常……
    markx
        43
    markx  
       2016-11-22 03:09:29 +08:00
    @zhouzm 我用的 prezto ,依然很慢。禁用某些插件的话可以很快,可是偏偏那些插件提供了我想要的功能。
    xcv58
        44
    xcv58  
       2016-11-22 04:04:39 +08:00   ❤️ 1
    @homfen @dodo20120 @markx 你们的原因如果是因为 nvm.
    可以试一下我的方法,我以前开一个 tab 也是 3 秒+。后来自己做了个 lazy load 现在都是秒开。 感觉比 antigen 要轻量一些。

    https://medium.com/@xcv58/if-your-zsh-starts-very-slow-cb1434ea16bd#.npadapawz
    https://github.com/xcv58/prezto/tree/master/modules/lazy-load
    pollow
        45
    pollow  
       2016-11-22 07:53:32 +08:00
    @dodo20120 只开了 git brew autojump osx 四个,也要四五秒……
    Gem
        46
    Gem  
       2016-11-22 08:15:40 +08:00
    没有升级到最新版的时候,秒开,现在升级到最新版,速度马上卡顿了。
    mrytsr
        47
    mrytsr  
       2016-11-22 08:47:35 +08:00 via Android
    fish 保平安
    dodo20120
        48
    dodo20120  
       2016-11-22 08:50:49 +08:00
    @xcv58 lazy load 用过,是快了,但各种问题,比如有的软件依赖 npm ,这时就不行了,
    Tink
        49
    Tink  
       2016-11-22 09:15:03 +08:00
    我的 ohmyzsh 貌似没有延迟啊
    mcfog
        50
    mcfog  
       2016-11-22 09:29:31 +08:00
    @dodo20120 常用的不一样的也就是圆括号和&&了吧, bash 脚本还是可以直接运行的嘛,反正没感觉不习惯
    hipeng
        51
    hipeng  
       2016-11-22 09:38:28 +08:00
    啥系统,看下 /etc/bash_completion.d/目录下的文件,先移除掉看看
    dodo20120
        52
    dodo20120  
       2016-11-22 10:38:34 +08:00
    @mcfog  我前几年用的时候是不兼容,现在好久没用了,不太清楚了
    finian
        53
    finian  
       2016-11-22 10:48:07 +08:00
    换 fish 可破
    focux
        54
    focux  
       2016-11-22 10:57:15 +08:00
    sudo rm -rf /private/var/log/asl/*.asl
    dodo20120
        55
    dodo20120  
       2016-11-22 11:43:26 +08:00
    @finian nvm 那个速度,换鲨鱼也没用
    Niris
        56
    Niris  
       2016-11-22 13:24:32 +08:00
    好多人提到 nvm 很慢,把下面这行注释掉就基本可以解决问题。

    https://github.com/creationix/nvm/blob/v0.32.1/nvm.sh#L3200
    xcv58
        57
    xcv58  
       2016-11-22 13:33:11 +08:00 via iPad
    @dodo20120 我的 lazy_load the 不一样。
    zander
        58
    zander  
       2016-12-09 22:11:44 +08:00
    antigen 和 zplug 都可以试试。
    zplug 的可定义性更强,速度(据称)更快。
    motmist
        59
    motmist  
       2017-10-18 11:42:12 +08:00
    @zander 感谢推荐 zplug,它是并行加载,速度很快
    motmist
        60
    motmist  
       2017-10-18 11:48:27 +08:00
    我 13 年 rmbp,512ssd(非 pcie) 原来用 antigen 加个 nvm ,启动 7、8 秒,优化后也要两三秒,都不敢装插件,用了 zplug 真的不要太快,插件也敢装了
    zander
        61
    zander  
       2017-10-18 14:29:01 +08:00
    @motmist 我自己换了 prezto,有时间你也可以试试。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3088 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:53 · PVG 20:53 · LAX 05:53 · JFK 08:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.