終止 tmux 會話時如何對所有程序發出 SIGKILL(或 SIGINT)訊號?

終止 tmux 會話時如何對所有程序發出 SIGKILL(或 SIGINT)訊號?

當我運行時tmux kill-session,它會發送SIGHUP到所有正在運行的進程。這通常不足以滿足我的目的,我想發送SIGINTSIGKILL

像這樣的命令就可以解決問題:

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 沒有任何不同。

相關內容