在终止 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 没有任何不同。

相关内容