2つの新しいセッションを開始すると、tmux
セッション名はタイムスタンプによって異なるように構成されます。 (このコマンドは最初にディレクトリを変更し、内容をリストし、bashを開いてセッションを開いたままにする新しい独立したtmuxセッションを作成します。)
tmux new -d -s tmux-s1-2014-12-04-16-12-12-103728 'cd /home/user/dir/ect/; ls; bash'
tmux new -d -s tmux-s2-2014-12-04-16-12-12-103728 'cd /home/user/dir/ory/; ls; bash'
htop
今、彼らがまだ実行されていることを確認するために行く場合は、ps aux
常にそれらの1つを探します。 (例えばps aux | grep tmux
)
user 13556 0.0 0.0 26288 1716 ? Ss 16:12 0:00 tmux new -d -s tmux-s1-2014-12-04-16-12-12-103728 cd /home/user/dir/ect/; ls; bash
user 13686 0.0 0.0 8072 864 pts/1 S+ 16:14 0:00 grep tmux
ただし、両方を使用すると、以下がtmux list-sessions
リストされます。
tmux-s1-2014-12-04-16-12-12-103728: 1 windows (created Thu Dec 4 16:12:20 2014) [80x23]
tmux-s2-2014-12-04-16-12-12-103728: 1 windows (created Thu Dec 4 16:12:20 2014) [80x23]
編集する:
これで追加のテストが行われ、今理解しているように、何らかのhtop
理由で分離されたセッションは/..に表示されません。ps
分離されていても、最初に確立されたセッションが表示されます。
bash
最初のセッションと2番目のセッションとは別に3つのセッションを作成しました。まだ三次会議が残っています。htop
フィルタリングしたときの出力ですtmux
。
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
17382 user 20 0 26296 1808 1176 S 5.0 0.1 0:00.86 ├─ tmux new -s first_session
17641 user 20 0 17552 1164 908 S 0.0 0.0 0:00.00 │ │ └─ tmux attach -t third_session
それでも3つすべてを表示していますtmux list-sessions
。
first_session: 1 windows (created Fri Dec 5 10:35:11 2014) [80x23]
second_session: 1 windows (created Fri Dec 5 10:35:23 2014) [80x23]
third_session: 1 windows (created Fri Dec 5 10:35:37 2014) [80x23] (attached)
問題はまだ同じです。分離されたセッションに関連付けられたセッションをすべてリストhtop
できないのはなぜですか?ps aux
答え1
デフォルトでは、Tmuxはユーザーごとに1つのサーバープロセスのみを実行し、サーバープロセスは複数のセッションを持つことができます。 Tmuxクライアントとサーバーは/ tmpディレクトリのUnixドメインソケットを介して通信します。 -L オプションを使用して別のソケットを指定できます。ソケットごとに新しいサーバーが作成されます。
源泉:http://hyperpolyglot.org/multiplexer
tmuxセッションはプロセスではないps
ため、表示されません。htop
見つかったように、すべてのユーザーセッションをホストする単一のtmuxサーバープロセスだけでなく、セッションに接続できるすべてのtmuxクライアントプロセスも表示されます。プロセスリストに表示されるのは、tmuxセッションのウィンドウとウィンドウで呼び出されたシェルやその他のサブプロセスです。
pstree -ap
tmuxを実行しているLinuxボックスの出力のいくつかを確認してください。
|-sshd,3406
| |-sshd,18196
| `-sshd,18201
| `-bash,18202
| `-tmux,18297 att
|-tmux,10496 new-session -s main
| |-bash,10497
| | `-ssh,10584 otherhost.mydomain.local
| |-bash,17650
| `-bash,18303
| |-less,18390
| `-pstree,18389 -ap
| `-bash,18487
| `-cat,18573 - this-is-in-another-session
私のtmuxサーバープロセス(10496)を見ることができます。私が最初に作成したセッションには3つのウィンドウがありました(すべて実行中bash
)。そのうちの1つはSSHを介して他のホストに接続されます。もう一人は信号に合わせて座っていたので子供はいませんでした。 3番目はpstree
出力をless
。私のtmuxクライアントプロセス(18297)も表示できます。
この3つのウィンドウは追加セッションにあります。
表示されるプロセスbash
とともにウィンドウを実行する別のセッションがあります。cat
これは分離されていますが、まだ単一のtmuxサーバープロセスの子プロセスです。