我的 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
。
顺便说一句,我发现 和pkill
都killall
非常危险,特别是当作为根用户使用时。