Wie kann ich beim Beenden einer Tmux-Sitzung alle Prozesse mit SIGKILL (oder SIGINT) beenden?

Wie kann ich beim Beenden einer Tmux-Sitzung alle Prozesse mit SIGKILL (oder SIGINT) beenden?

Wenn ich ausführe tmux kill-session, sendet es SIGHUPan alle laufenden Prozesse. Dies reicht für meine Zwecke oft nicht aus und ich möchte SIGINToder senden SIGKILL.

Ein Befehl wie dieser würde den Zweck erfüllen:

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

(DavonAntwort.)

Wie kann ich das bei jedem Anruf ausführen kill-session? Offenbar gibt es keinen before-kill-sessionHook.

Antwort1

Sie könnten Folgendes versuchen:

Fügen Sie Ihren Befehl in ein Skript wie dieses ein:

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

Und machen Sie daraus +x. Fügen Sie dann command-aliasFolgendes hinzu:

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

Es ist jedoch normalerweise keine gute Idee, alles als SIGKILL zu senden ... vielleicht als SIGTERM oder SIGINT, aber das sollte sich eigentlich nicht von SIGHUP unterscheiden.

verwandte Informationen