为什么我的第二个 tmux 会话未显示在 ps aux 或 htop 中,但显示在 tmux list-sessions 中?

为什么我的第二个 tmux 会话未显示在 ps aux 或 htop 中,但显示在 tmux list-sessions 中?

我启动两个新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 会话不会被显示pshtop因为它们不是进程。正如您所发现的,托管用户所有会话的单个 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 服务器进程的子进程。

相关内容