当我重新连接到 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}
负责获取父进程的PID的tmux attach
。
-g
意味着该钩子是全局的。用 取消挂钩tmux set-hook -gu client-attached
。
答案2
tmux 内的 shell?如果大小发生变化,它应该收到 SIGWINCH。
如果您想知道,即使大小没有改变,您也需要编写一个脚本,使用 tmux ls/lsp 进行轮询,以查看包含 shell 窗格的会话何时附加,或者破解 tmux 以向每个受影响的窗格发送信号在附加上。