Process

tmux 會話在未知點失去,原因和可能的解決方案?

  • September 26, 2020

我試圖重新連接到長時間執行的 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 在哪裡。

引用自:https://unix.stackexchange.com/questions/40928