shell 可以识别 tmux 何时重新连接吗?

shell 可以识别 tmux 何时重新连接吗?

当我重新连接到 tmux 会话时,我希望(我认为)我的 shell 接收到 SIGWINCH。但事实并非如此。 :( 有没有办法让 shell 识别它已重新连接?

答案1

是的。

你指的是里面的外壳tmux,即你连接后看到的那个外壳吗?如果是这样:

tmux set-hook -g client-attached 'run-shell "kill -s WINCH #{pane_pid}"'

或者您调用的 shell tmux attach,即您在附加之前看到的 shell? (虽然它没有什么意义)。如果是这样,类似:

tmux set-hook -g client-attached 'run-shell "kill -s WINCH \"$(ps -o ppid= -p #{client_pid})\""'

哪里ps -o ppid= -p #{client_pid}负责获取父进程的PIDtmux attach

-g意味着该钩子是全局的。用 取消挂钩tmux set-hook -gu client-attached

答案2

tmux 内的 shell?如果大小发生变化,它应该收到 SIGWINCH。

如果您想知道,即使大小没有改变,您也需要编写一个脚本,使用 tmux ls/lsp 进行轮询,以查看包含 shell 窗格的会话何时附加,或者破解 tmux 以向每个受影响的窗格发送信号在附加上。

相关内容