在使用时tmux
,我经常做以下事情:
- 创建新窗口
- ssh 到远程盒子
- cd 到特定目录
- 发射过程
现在我想跟踪刚刚在拆分中启动的进程的日志文件。因此我执行以下操作:
- 拆分窗口
ssh
到远程盒子(烦人)cd
到特定目录(烦人)tail -f logs/run.log
我希望可以有一个快捷方式来拆分窗口并自动ssh
进入同一个框并将 cd 到与父窗口相同的目录。
我遇到了以下命令,这让我相信这是可能的:
bind-key S command-prompt -p ssh: "new-window -n %1 'ssh %1'"
知道如何实现吗?
答案1
我将所有内容都放在一行代码中遇到了很大麻烦,窗口焦点和发送键的退出键会让人感到困惑。如果你稍微试验一下,你可能会在一行代码中完成所有操作。
创建一个 tmux 文件
# splitssh.tmux
split-window -h
send-keys 'ssh server' 'c-m' 'cd folder' 'c-m'
'tail -f logs/run.log' 'c-m'
bind-key S 源 splitssh.tmux
这是该主题的另一个链接 将 tmux 键绑定到多个命令
答案2
几个月前我偶然发现了你的问题,并且一直在寻找同样的问题。我终于弄清楚了如何完成你答案的一部分,也就是最难的部分(拆分现有的 SSH)。首先安装并配置西门子高压(SSH 助手)将当前 SSH 会话拆分到新窗格中。然后,我们可以通过ssh
将以下内容添加到我们的 SSH 配置中来重复使用相同的连接,从而使其变得非常快:
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 4h # change to whatever you like, but 4h is a good start.
请记住,如果我们的连接被终止,有时我们必须这样做rm --force /tmp/ssh_mux_*
。超快的 SSH 拆分的权衡是值得的!
另外,sshh
不能与开箱即用的 Fish shell 配合使用,但我知道如何让它工作,请参阅https://github.com/yudai/sshh/issues/4。