두 번째 tmux 세션이 ps aux 또는 htop에는 표시되지 않지만 tmux list-sessions에는 표시되는 이유는 무엇입니까?

두 번째 tmux 세션이 ps aux 또는 htop에는 표시되지 않지만 tmux list-sessions에는 표시되는 이유는 무엇입니까?

두 개의 새 세션을 시작하면 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항상 그 중 하나를 찾습니다. (예를 들어 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첫 번째 세션과 두 번째 세션과는 별도로 세 개의 세션을 만들었습니다 . 아직 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

여전히 세 가지를 모두 표시하는 동안 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/multiplexer

tmux 세션은 프로세스가 아니기 ps때문에 표시되지 않습니다 . htop발견한 바와 같이 모든 사용자 세션을 호스팅하는 단일 tmux 서버 프로세스는 물론 세션에 연결될 수 있는 모든 tmux 클라이언트 프로세스도 표시됩니다. 프로세스 목록에 표시되는 것은 tmux 세션의 창과 창에서 호출한 쉘과 기타 하위 프로세스입니다.

pstree -aptmux를 실행하는 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 서버 프로세스의 하위 프로세스입니다.

관련 정보