python web-applicationをチェックするために、長時間実行しているtmuxセッションに再接続しようとしました。ただし、tmux attach
は、実行中のセッションがないと主張し、ps
はtmux
プロセス(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
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です。
後日このスレッドに出くわす人向け。
Sudo
を使用してスクリプトなどを実行する場合、tmux
セッションは、Sudoを使用したユーザーではなく、ルートの下に表示されます。これは、Sudoに続くアクションがルートの下で実行されるためです。
これを修正するには、Sudo tmux a
、またはtmux
をrootとして使用して、tmuxセッションの制御を取り戻します。