tmux 会话在未知 pts 中丢失,原因和可能的解决方案?

mhe*_*ans 35 process tmux session

我试图重新附加到长时间运行的 tmux 会话以检查 python 网络应用程序。然而tmux attach声称没有正在运行的会话,并ps显示一个tmux进程(第一行),但用问号而不是pts数字。

这是什么意思——这个 tmux 会话是否永久丢失了,可能是什么原因造成的?有没有办法查看 python 进程的当前状态,在 tmux 会话中产生并在pts/19(第二行)中运行?

[mhermans@web314 ~]$ ps -ef | grep mhermans
mhermans 16709     1  0 Mar04 ?        00:26:32 tmux
mhermans  8526 16710  0 Mar04 pts/19   00:20:04 python2.7 webapp.py
root      9985  6671  0 10:18 ?        00:00:00 sshd: mhermans [priv]
mhermans 10028  9985  0 10:18 ?        00:00:00 sshd: mhermans@pts/16
mhermans 10030 10028  0 10:18 pts/16   00:00:00 -bash
mhermans 16247 10030  6 10:28 pts/16   00:00:00 ps -ef
mhermans 16276 10030  0 10:28 pts/16   00:00:00 grep mhermans
mhermans 16710 16709  0 Mar04 pts/19   00:00:00 -bash
mhermans 16777 16709  0 Mar04 pts/21   00:00:00 -bash
Run Code Online (Sandbox Code Playgroud)

mhe*_*ans 52

解决方案由Webfaction-support 提供

由于进程仍在运行,问题是一个已删除的套接字,可能是由清除的 tmp 目录引起的。

根据tmux地图:

如果套接字被意外删除,SIGUSR1 信号可能会发送到 tmux 服务器进程以重新创建它。

所以发送信号并附加工作:

killall -s SIGUSR1 tmux
tmux attach
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`pkill -10 tmux`直接发送`SIGUSR1`到所有tmux进程 (3认同)

poi*_*ige 9

终端缺席是分离会话的标志。您tmux可以这样找到所有会话名称:

ls $TMP/tmux-$(id -u) 或者 ls /var/run/tmux/tmux-$(id -u)

- 这有点依赖发行版。几乎独立于发行版(和更硬核)将是:

lsof -n -p 16709 -a -U

16709列表中 tmux 的 PID在哪里。