![shell 可以识别 tmux 何时重新连接吗?](https://linux22.com/image/156112/shell%20%E5%8F%AF%E4%BB%A5%E8%AF%86%E5%88%AB%20tmux%20%E4%BD%95%E6%97%B6%E9%87%8D%E6%96%B0%E8%BF%9E%E6%8E%A5%E5%90%97%EF%BC%9F.png)
当我重新连接到 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 以向每个受影响的窗格发送信号在附加上。