我启动两个新tmux
会话,会话名称是根据时间戳不同构建的。 (这些命令创建一个新的、独立的 tmux 会话,它首先更改目录,列出内容,然后打开 bash,以保持会话打开)
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
它们是否仍在运行,我总是会找到其中之一。 (例如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
第一个和第二个会话分离。第三次会议仍附后。这是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
而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 只会为每个用户运行一个服务器进程,并且该服务器进程可以有多个会话。 Tmux 客户端和服务器通过 /tmp 目录中的 Unix 域套接字进行通信。 -L选项可用于指定不同的套接字;为每个套接字创建一个新服务器。
来源:http://hyperpolyglot.org/多路复用器
tmux 会话不会被显示ps
,htop
因为它们不是进程。正如您所发现的,托管用户所有会话的单个 tmux 服务器进程以及可能附加到您的会话的任何 tmux 客户端进程确实会显示。您将在进程列表中看到的是您在 tmux 会话的窗格和窗口中调用的任何 shell 和其他子进程。
查看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
)。其中一个通过 ssh 连接到其他主机。另一位则按提示坐着,因此没有孩子。第三个是pstree
在 中显示输出less
。您还可以查看我的 tmux 客户端进程 (18297)。
这 3 个窗格位于附加的一个会话中。
我有另一个会话正在运行一个窗格bash
以及cat
您看到的进程。这是分离的,但仍然是单个 tmux 服务器进程的子进程。