Como posso SIGKILL (ou SIGINT) todos os processos ao encerrar uma sessão do tmux?

Como posso SIGKILL (ou SIGINT) todos os processos ao encerrar uma sessão do tmux?

quando executo tmux kill-session, ele envia SIGHUPpara todos os processos que estão em execução. Muitas vezes isso não é suficiente para meus propósitos e quero enviar SIGINTou SIGKILL.

Um comando como este resolveria o problema:

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

(A partir desteresponder.)

Como posso executar isso toda vez que ligo kill-session? Aparentemente não há before-kill-sessiongancho.

Responder1

Você poderia tentar isso -

Coloque seu comando em um script como este:

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

E faça +x. Em seguida, adicione command-aliasassim:

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

Geralmente é uma má ideia enviar tudo SIGKILL... SIGTERM ou SIGINT talvez, mas eles não deveriam ser diferentes de SIGHUP.

informação relacionada