![여러 다운로더를 supervisorctl 서비스로 관리하기 위해 tmux를 사용하시겠습니까?](https://rvso.com/image/1395394/%EC%97%AC%EB%9F%AC%20%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%8D%94%EB%A5%BC%20supervisorctl%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A1%9C%20%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20tmux%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
데이터가 제공되자마자 http를 통해 다운로드해야 하는 데이터 서버가 많이 있습니다. 각 서버에 대해 bash
" " 루프를 시작 while true
하고 그 내에서 wget
서버에서 새 데이터를 폴링합니다. 모든 것을 시작하기 위해 루프와 같은 모든 루프에 대해 창을 시작하는 구성을 bash
만들었습니다 . 이는 무슨 일이 일어나고 있는지 더 쉽게 검사할 수 있다는 이점을 추가합니다.tmux
wget
이 구성에서 -service를 생성하여 이 구성 과 다운로드 중인 클라이언트를 한 번에 supervisor
시작, 중지, 다시 시작할 수 있도록 하려고 합니다.tmux
그러나 을(를) 종료하면 tmux
의 특성상 tmux
s bash
와 해당 wget
s가 계속 실행됩니다. 모든 것을 종료하고 간단한 으로 다시 시작할 수 있는 방법이 있습니까 supvervisorctl tmuxservice restart
?
답변1
그만큼tmux 매뉴얼 페이지다음과 같은 유용한 명령이 있습니다.
kill-server tmux 서버와 클라이언트를 종료하고 모든 세션을 삭제합니다.
kill-session [-t target-session] 지정된 세션을 삭제하고 연결된 모든 창을 닫고 다른 세션은 닫지 않으며 연결된 모든 클라이언트를 분리합니다.
list-clients [-t target-session] (별칭: lsc) 서버에 연결된 모든 클라이언트를 나열합니다. target-session이 지정된 경우 해당 세션에 연결된 클라이언트만 나열됩니다.
list-commands (별칭: lscm) tmux에서 지원하는 모든 명령의 구문을 나열합니다.
list-sessions(별칭: ls) 서버에서 관리하는 모든 세션을 나열합니다.
다음 명령을 사용할 수 있습니다.티먹스예를 들어 다음과 같습니다.
tmux list-commands
이제 세션을 나열할 수 있습니다.
tmux list-clients
이제 다음을 통해 선택한 클라이언트를 정확히 죽일 수 있습니다.
tmux kill-session -t 1
(예를 들어 첫 번째 세션을 종료하려는 경우) 그렇게 하면 세션이 단순히 분리되는 것이 아니라 종료됩니다. 다음 예를 참조하세요.
$ tmux list-session
1: 1 windows (created Sun Jan 26 20:31:16 2014) [271x63] (attached)
4: 1 windows (created Mon Jan 27 22:38:14 2014) [103x28] (attached)
$ tmux list-clients
/dev/pts/6: 1 [271x64 xterm] (utf8)
/dev/pts/7: 4 [103x29 xterm] (utf8)
$ ps ax | grep ssh
1160 ? Ss 0:00 /usr/sbin/sshd -D
1811 ? Ss 0:00 ssh-agent
10733 pts/0 S+ 0:00 ssh -Y me@sony
11093 pts/13 S+ 0:00 grep --color=auto ssh
$ tmux kill-session -t 1
$ ps ax | grep ssh
1160 ? Ss 0:00 /usr/sbin/sshd -D
1811 ? Ss 0:00 ssh-agent
12043 pts/13 S+ 0:00 grep --color=auto ssh
보시다시피 저는 활동적이었습니다.SSH라는 PC에 연결소니, tmux의 세션 1에서. 내가 그것을 죽이면 연결이 사라졌습니다.
이것이 바로 이 명령이 도움이 될 것이라고 생각합니다.