¿Cómo puedo SIGKILL (o SIGINT) todos los procesos al cerrar una sesión tmux?

¿Cómo puedo SIGKILL (o SIGINT) todos los procesos al cerrar una sesión tmux?

cuando lo ejecuto tmux kill-session, envía SIGHUPa todos los procesos que se están ejecutando. A menudo esto no es suficiente para mis propósitos y quiero enviar SIGINTo SIGKILL.

Un comando como este funcionaría:

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

(De estorespuesta.)

¿Cómo puedo ejecutar esto cada vez que llamo kill-session? Al parecer no hay ningún before-kill-sessiongancho.

Respuesta1

Podrías probar esto...

Pon tu comando en un script como este:

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

Y hazlo +x. Luego agregue command-aliasasí:

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

Aunque suele ser una mala idea enviar todo SIGKILL... quizás SIGTERM o SIGINT, pero en realidad no deberían ser diferentes de SIGHUP.

información relacionada