두 개의 새 세션을 시작하면 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 -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 서버 프로세스의 하위 프로세스입니다.