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
スクリプトなどを実行すると、tmux
sudo 以降の操作は root で実行されるため、セッションは sudo を使用しているユーザーではなく root の下にリストされます。
この問題を解決するには、root または をsudo tmux a
使用してtmux
tmux セッション制御を取得します。