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を受け取る必要があります。


5
しかし、SIGHUPはプロセスを強制終了しません。通常はそれらを再スパンします。
アンドレアパヴォーニ14年

1
話しているプロセスに依存します。実際、一部のデーモンは、SIGHUPを再初期化のシグナルとして使用しますが(構成ファイルの再読み取りなど)、通常はプロセスグループと制御端末から分岐し、それ以降は独立していると見なされる必要があります。通常、対話型アプリケーションは、信号を処理していないか、端末の種類を失うと対話型にならないために終了します。
ペテルフ14年

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セッション内からこれを実行すると、生成されたすべてのプロセスが強制終了されexitます。その後、でtmuxを終了できます。


0

(免責事項:私は初心者です)このスクリプトは、すべてのペイン/ウィンドウ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.