不明な時点でtmuxセッションが失われました。理由と考えられる解決策は何ですか?

不明な時点でtmuxセッションが失われました。理由と考えられる解決策は何ですか?

Python Webアプリケーションを調べるために、長時間実行されたtmuxセッションに再接続しようとしています。ただし、tmux attach実行中のセッションがないと主張してプロセス(最初の行)をps表示しますtmuxが、数字の代わりに疑問符が表示されますpts

これはどういう意味ですか?このtmuxセッションは永久に失われますか?原因は何ですか? tmuxセッションで作成され、pts/19実行中のPythonプロセス(2行目)の現在の状態を表示する方法もありますか?

[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

答え1

提供されるソリューションWebファクションサポート:

プロセスが実行され続けているため、ソケットが削除されるのは問題です。おそらく消去されたtmpディレクトリが原因であるようです。

tmux地図によると:

ソケットが誤って削除された場合、SIGUSR1信号はtmuxサーバープロセスに送信され、再生成される可能性があります。

したがって、信号を送信してタスクを添付します。

killall -s SIGUSR1 tmux
tmux attach

答え2

端末が存在しないということは、セッションが切断されたという信号である。tmux次のようにすべてのセッション名を見つけることができます。

ls $TMP/tmux-$(id -u)またはls /var/run/tmux/tmux-$(id -u)

- ディストリビューションによって多少異なります。展開にほとんど独立しており、より重要なものは次のとおりです。

lsof -n -p 16709 -a -U

16709リストからtmuxのPIDはどこにありますか?

答え3

それだけです。以前の答えはここにあります。助けてくれました(うわー!)私は解決しようとしました。正確にTmuxに接続している場合 - で見ることができますtmux lsしかし、でもps見ることができます。その他tmux、リストにないので、tmux ls名前を使用して接続できません(tmux attach -t myOldbas)

詳しくは下記をご覧ください。プロセス:

71358     1849  9617  0 Sep04 pts/29   00:00:00 /bin/bash
71358     2528  9617  0 Aug31 pts/25   00:00:00 /bin/bash
71358     9617     1  0 Aug31 ?        00:08:55 tmux new -s myOld
71358     9618  9617  0 Aug31 pts/20   00:00:00 /bin/bash
71358    20199 33189  0 Sep16 pts/27   00:00:00 vim log
71358    20415 32257  0 Sep16 pts/30   00:00:00 /bin/bash
71358    24735 32257  0 Sep16 pts/33   00:00:00 /bin/bash
71358    32257     1  0 Sep16 ?        00:04:02 tmux new -s myses

今、lsofビットは本当に役に立ちました。- その時2つのプロセス、私の場合は32257(私が見ることができるもの)と9617(以前のもの)

/usr/sbin/lsof -n -p 32257 -a -U
COMMAND   PID             USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
..
tmux    32257 uzer.buzer          7u  unix 0xffff881ff0c73480      0t0 995795763 /tmp/uzer.buzer/tmux-71358/default

ただし、古いPIDを使用すると、次のようになります。

/usr/sbin/lsof -n -p 9617 -a -U

tmux    9617 uzer.buzer          7u  unix 0xffff881ff0c73480      0t0 995795763 /tmp/tmux-71358/default

気づく、最後のソケットパスの違いは何ですか? 幸いなことに、私が必要とし、明示的なソケットを使用して追加のコマンドを実行しました。

tmux -S /tmp/tmux-71358/default at

私はその中にいます!

答え4

今後このスレッドに遭遇するすべての人のために。

これを使用してsudoスクリプトなどを実行すると、tmuxsudo 以降の操作は root で実行されるため、セッションは sudo を使用しているユーザーではなく root の下にリストされます。

この問題を解決するには、root または をsudo tmux a使用してtmuxtmux セッション制御を取得します。

関連情報