的一些注释wait-for

的一些注释wait-for

最近发现 tmux 和 Tmuxinator 后,我一直在尝试建立一个开发环境来使用。

根据协议,我们不允许在脚本中存储密码/密码短语。所以我正在寻找的是等待 tmux 等待 SSH 隧道建立(提供密码、按下输入键并登录)。

我知道 tmux 1.8+ 中有一个“等待”命令。我正在通过 Cygwin 运行 1.9a。但即使我已经阅读了文档,我还是很难理解它。

tmux new-session -s development -n editor -d
tmux split-window -v
tmux split-window -v

"Need to send to all panes.
tmux send-keys -t development 'ssh [email protected]' C-m

所以,这是我所拥有的一个非常简单的版本。

想法?我知道我可以同步会话,但我仍在解决其中的问题。

编辑:研究命令,并将变量从窗格拉到同步窗格中的命令。在我弄清楚如何让 TMUX 提示我进行用户输入之前,这可能是一种“更好”的方法。

可能会发出功能请求。

答案1

的一些注释wait-for

因此,如果您将 wait-for 视为类似于线程,那么它的基本用法并不太复杂并发原语

它并没有真正连接到其他 tmux 功能,只是 IPC 的便捷实现。

wait-for event_name就像等待一个事件 wait-for -S event_name 是一种发出信号的手段事件

-U选项-L有点正交,就像信号量

直接回答你的问题

wait-for您可以使用但仅当命令同步时才能解决此类竞争条件。

tmux send-keys 'sync-command ; tmux wait-for -S command-finished' C-m
tmux wait-for command-finished

这里的问题是 ssh 命令不同步:您无法知道它何时完成。

翻翻手册我们可以找到LocalCommand似乎可以完成我们想要的操作的指令:连接完成后在本地运行命令,以便我们可以调用

ssh [email protected] -o 'PermitLocalCommand yes' -o 'LocalCommand  tmux wait-for -S done'

相关内容