如果我在 tmux 中运行一个有大量输出的命令,但决定用 Ctrl-C 取消它,那么在它停止之前会有 10-15 秒的延迟。但是,如果我在 tmux 之外做同样的事情,它会立即停止。为什么会这样,是否可以修复?
实际上,当我grep -R在一个大目录上进行操作并且我的搜索没有受到足够的限制时,就会出现这个问题。一种解决方法是首先将结果传送到管道wc以确保输出不会太长,但这只是我想避免的另一个步骤。
笔记:
grep -R在杂乱的主目录中停止(没有其他参数)大约需要 15 秒。对于 80×25 字符的终端,它几乎立即停止。小智 11
tmux 现在有以下选项:
c0-change-interval interval
c0-change-trigger trigger
Run Code Online (Sandbox Code Playgroud)
您可以为这些设置值,这将使 ^C 和朋友更容易输入。见man tmux:
这两个选项为窗格配置了一种简单的速率限制形式。如果 tmux在一毫秒内看到多个修改屏幕的触发C0 序列(例如,回车、换行或退格),它将立即停止更新窗格,而是每隔间隔毫秒重新绘制它。这有助于防止快速输出(例如 yes(1))压倒终端。默认值为 250 的触发器和 100 的间隔。零触发器将禁用速率限制。
由于tmux将自身插入到cat进程和终端之间,因此它需要读取 的输出cat,将其写入终端,同时从终端(^C)读取您的输入并将其发送到 shell 以中断命令。我不确定到底是什么导致了延迟,但它与如何tmux缓冲您和运行在tmux.
| 归档时间: |
|
| 查看次数: |
12620 次 |
| 最近记录: |