tmux セッションを終了するときに、すべてのプロセスを SIGKILL (または SIGINT) するにはどうすればよいですか?

tmux セッションを終了するときに、すべてのプロセスを SIGKILL (または SIGINT) するにはどうすればよいですか?

を実行するとtmux kill-sessionSIGHUP実行中のすべてのプロセスに が送信されます。これは多くの場合、私の目的には不十分であり、SIGINTまたは を送信する必要がありますSIGKILL

次のようなコマンドでうまくいきます:

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

(これから答え

呼び出すたびにこれを実行するにはどうすればよいですかkill-session? どうやらフックはないようですbefore-kill-session

答え1

これを試してみるといいでしょう -

次のようなスクリプトにコマンドを入力します。

tmux lsp ...
tmux real-kill-session "$@"

そしてそれを +x にします。そしてcommand-alias次のように追加します:

set -s command-alias[100] 'real-kill-session=kill-session'
set -s command-alias[101] 'kill-session=run /path/to/kill.sh'

ただし、通常はすべてを SIGKILL で送信するのはよくありません... SIGTERM または SIGINT でもよいのですが、これらは SIGHUP と実際には何ら変わりません。

関連情報