여러 다운로더를 supervisorctl 서비스로 관리하기 위해 tmux를 사용하시겠습니까?

여러 다운로더를 supervisorctl 서비스로 관리하기 위해 tmux를 사용하시겠습니까?

데이터가 제공되자마자 http를 통해 다운로드해야 하는 데이터 서버가 많이 있습니다. 각 서버에 대해 bash" " 루프를 시작 while true하고 그 내에서 wget서버에서 새 데이터를 폴링합니다. 모든 것을 시작하기 위해 루프와 같은 모든 루프에 대해 창을 시작하는 구성을 bash만들었습니다 . 이는 무슨 일이 일어나고 있는지 더 쉽게 검사할 수 있다는 이점을 추가합니다.tmuxwget

이 구성에서 -service를 생성하여 이 구성 과 다운로드 중인 클라이언트를 한 번에 supervisor시작, 중지, 다시 시작할 수 있도록 하려고 합니다.tmux

그러나 을(를) 종료하면 tmux의 특성상 tmuxs bash와 해당 wgets가 계속 실행됩니다. 모든 것을 종료하고 간단한 으로 다시 시작할 수 있는 방법이 있습니까 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에서. 내가 그것을 죽이면 연결이 사라졌습니다.

이것이 바로 이 명령이 도움이 될 것이라고 생각합니다.

관련 정보