TMUX 세션을 종료하고 생성 된 프로세스


13

나는 실행중인 프로세스가 있음을 알았고 그것이 tmux를 사용하는 byobu에서 프로세스를 초기화했기 때문이라고 생각합니다.

ps aux | grep sidekiq
1000     13786  0.0  0.0   8108   900 pts/4    S+   11:27   0:00 grep sidekiq

"3"이라는 tmux 세션이 있습니다. 아래에서 볼 수 있듯이 :

$ byobu   

Byobu sessions...

  1. tmux: 3: 1 windows (created Wed Aug 28 10:57:54 2013) [229x84] (attached)
  2. tmux: daemon: 1 windows (created Thu Jul 11 12:59:09 2013) [127x83]
  3. tmux: juggernaut: 1 windows (created Thu Jul 11 12:54:08 2013) [80x23]

해당 세션을 종료하고 해당 세션에서 작성된 모든 실행중인 프로세스를 종료하고 싶습니다.


'ps -ef | grep byobu '및'ps -ef | grep tmux '?
더스틴 커클랜드

답변:


15
tmux kill-session [-t session_name]

가상 터미널의 프로세스는 SIGHUP을 수신해야합니다.


6
그러나 SIGHUP은 프로세스를 죽이지 않습니다. 일반적으로 그것들이 다시 발생 합니다.
Andrea Pavoni 2018 년

1
어떤 프로세스에 대해 이야기하고 있는지에 따라 다릅니다. 실제로 일부 데몬은 SIGHUP을 재 초기화 (구성 파일 등을 다시 읽음)하는 신호로 사용하지만 일반적으로 프로세스 그룹과 제어 터미널에서 분리되어 그때부터 독립적으로 간주되어야합니다. 대화 형 응용 프로그램은 일반적으로 신호를 처리하지 않거나 터미널 종류가 손실되어 대화 형이되지 않기 때문에 종료됩니다.
peterph

6

이것은 나를 귀찮게 했으므로 이것을 위해 tmux 플러그인을 작성했습니다. 완벽하지는 않지만 tmux를 종료하기 전에 대부분의 프로세스를 안전하게 종료하는 방법을 알기 위해 쉽게 확장 할 수 있습니다. tmux-safekill


4

아마도 가장 우아한 해결책은 아니지만 요청한 것을 수행합니다.

tmux list-panes -s -F "#{pane_pid} #{pane_current_command}" | grep -v tmux | awk '{print $1}' | xargs kill -9

tmux 세션 내에서 이것을 실행하면 생성 된 모든 프로세스가 종료되고으로 tmux를 종료 할 수 있습니다 exit.


1

(면책 조항 : 초보자입니다)이 스크립트는 모든 창 / 창을 some_session종료하고 종료합니다.

#!/usr/bin/env bash

session="some_name"

echo about to kill ${session}, ok?
read -n 1 -s -r -p "Press key..."
echo 

sessiontest=`tmux ls | grep ${session}`

if [ "${sessiontest}" == "" ]; 
then
        echo no running session ${session}
else        
        for name in `tmux list-windows -F '#{window_name}' -t ${session}` ; do 

        tmux select-window -n

        for pane in `tmux list-panes -F '#{pane_id}' -t ${session}` ; do 
        tmux send-keys -t $pane C-c
        # send SIGINT to all panes in selected window
        echo ${session}:$name.${pane//%}
        done

        for pane in `tmux list-panes -F '#{pane_pid}' -t ${session}` ; do 
        kill -TERM ${pane}
        # terminate pane
        done

        done 
fi

echo list-sessions:
tmux list-sessions
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.