【问题标题】:tmux: hangs and do not load, and do not respond to any option commandtmux:挂起不加载,不响应任何选项命令
【发布时间】:2011-09-13 20:29:10
【问题描述】:

我在 Fedora 的本地空间中从源代码安装了 tmux。到目前为止,它运行良好。但是突然不能再运行了,当运行 tmux 时,它就停止了。尝试了不同的命令选项,如 ls-sessions,没有一个有效。杀死我用户的所有进程,删除所有tmux和libevnet的文件,然后从头开始重新安装。还是一样,终端中的 tmux 命令只是冻结而没有任何实际错误。

【问题讨论】:

标签: linux tmux


【解决方案1】:

我遇到这个问题很久了,经过一番搜索,我发现这是因为我不小心按了 Ctrl+S (Ctrl+A+S 是我切换窗格的快捷方式),这将关闭终端中的流控制并阻止终端接受输入。可以通过按Ctrl+Q重新启用。

来源: https://superuser.com/a/553349/137226

【讨论】:

    【解决方案2】:

    有一个类似的问题,我有一个带有两个缓冲区的 tmux 会话。我没有看到我输入的任何内容,但是当我在缓冲区之间切换时,我之前输入的内容会出现在屏幕上。 stty sane 没用。

    我分离了 Ctrl-b+d,当我查看 tmux list-clients 时发现仍然有一个客户端附加。 tmux detach-client 删除了它,然后我可以重新连接,一切都恢复正常了。

    【讨论】:

    • 哇!这解决了我经常遇到的问题...谢谢
    • 额外的客户是侥幸吗?
    • 谢谢!!!!你是单身谁给出了正确的答案。
    【解决方案3】:

    如果可以丢失会话,请尝试删除/tmp 目录下的tmux-NNNNNNN 目录,其中NNNNNNN 是一个数字。根据tmux手册,如果设置了TMPDIR环境变量,tmux-NNNNNNN将被放入TMPDIR中。

    tmux 将服务器套接字存储在 /tmp(或 TMPDIR 如果设置)下的目录中;

    这解决了我无法运行与会话相关的tmux 命令的问题。我也尝试了以下方法,但没有奏效:

    • killall -9 tmux
    • 重新安装tmux
    • 重启 shell 会话

    我无法轻易重启操作系统,因为它是由他人管理的共享服务器。

    【讨论】:

    • 这对我有用,因为 tmux 在我尝试在终端中启动它时就挂起。
    • 删除 /tmp/tmux-NNNNNNN 文件夹有帮助。谢谢。
    【解决方案4】:

    tmux 在我启动它之后就停止了。 Ctrl-QCtrl-C 没有做任何事情。

    固定为

    killall -9 tmux
    

    (可能是另一个问题,但这个问题出现在 Google 中。)

    【讨论】:

    • tmux 从 11 月 8 日(5 周)开始在这里运行,只有 kill -9 也有帮助。 ps waxl 表明它处于深度睡眠状态:1 3605 16359 1 20 0 33004 4156 n_tty_ Ss ? 41:37 tmux。你还记得你的旗帜吗?
    • 不。但是下次发生这种情况时我会检查ps waxl
    • 至少得到一个堆栈跟踪。否则杀死它就像关闭计算机一样修复。如果您希望它再次发生 - 您可能应该这样做 - 您还可以配置 Tmux 以将其缓冲区记录到文件中,这样您就可以进行一些事后分析。
    【解决方案5】:

    我有同样的问题。原因是tmux 缓冲区已满,也可能是tmux 会话的多个客户端的原因。

    要解决这个问题,您需要从会话中分离所有客户端,然后重新附加它。

    我发现解决它的最佳方法是添加到~/.bashrc 文件中:

    check_params() {
           if [[ $1 < $2 ]]; then
                   echo -e "Usage:\n${3}"
                   ok=0
           else
                   ok=1
           fi
    
    }
    
    # detach all the clients from this session, and attach to it.
    reattach_client() {
           check_params $# 1 "reattach_client <tmux_session_name>"
           if [[ $ok == 1 ]]; then
                   tmux list-client | grep $1 | awk '{split($1, s, ":"); print s[1]}' | xargs tmux detach-client -t | true
                   tmux attach -t $1
           fi
    }
    

    然后运行 ​​source ~/.bashrc 在终端中进行这些更改。

    现在附加会话类型:

    reattach_client <session_name>
    

    解决了我的问题。

    感谢 Alex Zelichenko 为我提供的帮助!

    【讨论】:

    • 我有两个 tmux 会话,它们工作正常,但新 shell 中的任何 tmux 命令都挂起。从正在运行的 tmux 会话中分离解决了这个问题。谢谢。
    【解决方案6】:

    您应该能够通过以下一些测试来缩小您的问题范围:

    1. 从 X11 外部试一试:Ctrl+Alt+F2(或在另一台计算机上使用ssh

    2. 测试其他终端仿真器是否工作:scriptscreen

    3. 尝试另一个复杂的终端应用程序:htopmc

    4. 重置您的 TTY 设置:stty sane

    5. 检查您的终端是否已识别:echo $TERM(应该类似于“xterm”或“linux”)

    6. 使您的终端功能文件存在:ls -lh /usr/share/terminfo/*/$TERM

    【讨论】:

      【解决方案7】:

      谢谢。 我发现了问题。 tmux 进程处于 D 状态,我只好重启系统。 问题来自 kerberos 票证在一段时间后到期。并找到解决此问题的脚本: https://iain.cx/src/ktmux/

      【讨论】:

      • 我的没有挂在 D 状态,它只是在睡觉。 kill -9 帮助。
      【解决方案8】:

      一个不那么激烈的操作(在杀死 tmux 进程之前尝试)是 ssh 进入机器并运行以下命令。

      kill -CONT `pidof tmux`
      

      来源:https://github.com/tmux/tmux/issues/507#issuecomment-271502093

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多