恢复 tmux 坚称未运行的 tmux 会话

恢复 tmux 坚称未运行的 tmux 会话

我的 tmux 会话已经运行了一段时间,我可以看到它正在使用以下命令运行pstree

systemd─┬─accounts-daemon───2*[{accounts-daemon}]
        ├─2*[agetty]
        ├─containerd───11*[{containerd}]
        ├─cron
        ├─dbus-daemon
        ├─4*[dd]
        ├─dockerd───12*[{dockerd}]
        ├─fail2ban-server───2*[{fail2ban-server}]
        ├─irqbalance───{irqbalance}
        ├─networkd-dispat
        ├─polkitd───2*[{polkitd}]
        ├─qemu-ga
        ├─rsyslogd───3*[{rsyslogd}]
        ├─ssh-agent
        ├─sshd───sshd───sshd───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-network
        ├─systemd-resolve
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        ├─tmux: server─┬─bash───find_cli
        │              └─3*[bash]
        └─unattended-upgr───{unattended-upgr}

(它在底部)

然而,tmux它本身坚持没有会议:

$ tmux attach
no sessions
$ tmux ls
no server running on /tmp/tmux-1000/default

在这种情况下有什么方法可以恢复 tmux 会话吗?

答案1

如果插座已被移除,您应该能够让 tmux 重新创建它pkill -USR1 tmux

答案2

如果ps或其他进程信息命令显示tmux仍在运行但未正确响应该tmux attach命令,您可以通过向 tmux 服务器发送 SIGUSR1 信号来使 tmux 再次交互。

正如上面的答案中提到的,这可以通过使用命令来完成pkill -USR1 tmux。然后您可以tmux attach再次运行该命令以查看现在是否可以与 tmux 交互。

机枪使用方法的替代方法pkill是使用带有 的特定 PID 编号kill。命令模板pkill与使用 PID 号而不是程序名称模式的方法非常相似。因此您的命令可能如下所示:

$ 杀死 -USR1 NNNN

您可以通过仔细阅读 的输出来获得 NNNN ps ax | grep tmux。这假设您有多个 tmux 实例正在运行。否则(即,如果您只运行一个 tmux 实例),tmux 确实更容易pkill

顺便说一句,我发现 和pkillkillall非常危险,特别是当作为根用户使用时。

相关内容