Process
tmux 會話在未知點失去,原因和可能的解決方案?
我試圖重新連接到長時間執行的 tmux 會話以檢查 python 網路應用程序。但是
tmux attach
聲稱沒有正在執行的會話,並ps
顯示一個tmux
程序(第一行),但帶有問號而不是pts
數字。這是什麼意思——這個 tmux 會話是否永久失去,是什麼原因造成的?是否還有辦法查看在 tmux 會話中生成並在
pts/19
(第二行)中執行的 python 程序的目前狀態?[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
由Webfaction-support提供的解決方案:
由於該程序仍在執行,因此問題是一個已刪除的套接字,可能是由已清除的 tmp 目錄引起的。
根據
tmux
地圖:如果套接字被意外刪除,SIGUSR1 信號可能會被發送到 tmux 伺服器程序以重新創建它。
所以發送信號和附加工作:
killall -s SIGUSR1 tmux tmux attach
終端缺席是分離會話的標誌。您的所有
tmux
會話名稱都可以這樣找到:
ls $TMP/tmux-$(id -u)
要麼ls /var/run/tmux/tmux-$(id -u)
- 這有點依賴於發行版。幾乎獨立於發行版(並且更核心)將是:
lsof -n -p 16709 -a -U
16709
列表中 tmux 的 PID 在哪裡。