web-dev-qa-db-ja.com

tmuxセッションが不明なpts、原因、および考えられる解決策で失われましたか?

python web-applicationをチェックするために、長時間実行しているtmuxセッションに再接続しようとしました。ただし、tmux attachは、実行中のセッションがないと主張し、pstmuxプロセス(1行目)を示していますが、pts番号の代わりに疑問符が付いています。

これはどういう意味ですか-このtmuxセッションは永久に失われていますか、そして何が原因でしたか?まだtmuxセッションで生成され、pts/19(2行目)で実行されている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
27
mhermans

Webfaction-support によるソリューションの提供:

プロセスがまだ実行されていたため、問題は削除されたソケットであり、おそらくパージされたtmpディレクトリが原因でした。

tmuxマップによると:

ソケットが誤って削除された場合、SIGUSR1シグナルがtmuxサーバープロセスに送信されて再作成されます。

したがって、信号を送信して作品を添付する:

killall -s SIGUSR1 tmux
tmux attach
40
mhermans

端末の不在は、セッションが切り離されていることを示しています。そして、すべてのtmuxセッション名は次のようにして見つけることができます:

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

—これはちょっとディストリビューションに依存しています。ほとんどディストリビューションに依存しない(そしてよりハードコアな)ものは:

lsof -n -p 16709 -a -U

どこ 16709は、リスト内のtmuxのPIDです。

7
poige

後日このスレッドに出くわす人向け。

Sudoを使用してスクリプトなどを実行する場合、tmuxセッションは、Sudoを使用したユーザーではなく、ルートの下に表示されます。これは、Sudoに続くアクションがルートの下で実行されるためです。

これを修正するには、Sudo tmux a、またはtmuxをrootとして使用して、tmuxセッションの制御を取り戻します。

0
NewToTmux