我希望能够在远程服务器上启动 tmux 会话,然后在我的本地机器上使用 iTerm2 的本机窗口和分屏。
例如,假设我的远程服务器有一个 tmux 会话,该会话运行一个具有两个窗格的窗口。在我本地机器上的 iTerm2 中,我想要两个本机 iTerm2 窗格,以便每个窗格包含一个不同的 tmux 窗格。
这可能吗?
(我知道相反的情况是可能的——我可以在我的本地机器上运行一个 tmux 会话,而另一台机器会看到我的 iTerm2 选项卡作为窗口。但这似乎没什么用。)
小智 44
是的,这是可能的,只要确保:
通过登录ssh login@hostname -t 'tmux -CC'然后瞧——这应该会在登录到远程框的本地框上打开 iTerm2 窗口。
小智 12
总长DR
ssh <hostname> -t 'tmux -CC new -A -s tmssh'
Run Code Online (Sandbox Code Playgroud)
解释
在现有的 ssh 会话中(假设您正在使用 iTerm2),您可以简单地运行tmux -CC,然后将打开一个带有 tmux 集成的本机 iTerm2 窗口。这意味着您可以使用本机滚动、分屏和复制粘贴。
tmux -CC在控制模式下打开 tmux 。
您可以将其与 ssh 命令结合起来立即打开本机 tmux 窗口:
ssh login@hostname -t 'tmux -CC'
Run Code Online (Sandbox Code Playgroud)
-t强制伪 tty 分配(允许 SSH 内的控制字符)
这种方法的缺点是您每次都会获得一个新的 tmux 会话,因此您将无法重新连接以查看长时间运行的进程(除非您记得运行tmux -CC attach)。
我们可以稍微扩展该命令来创建一个命名的 tmux 会话,如果会话不存在则创建该会话,或者如果会话已存在则重新连接:
ssh <hostname> -t 'tmux -CC new -A -s tmssh'
Run Code Online (Sandbox Code Playgroud)
new创建一个新会话-A使new-session行为就像attach-session会话名称已经存在一样-s tmssh创建一个名为的会话tmssh
现在您有了一个本机 iTerm2 tmux 窗口,您可以随时关闭该窗口,并在需要时重新连接。
辅助功能
最后,为了让生活更轻松,我们可以将这一切放入一个辅助函数中,您可以将其添加到您的bashrcor中zshrc:
ssh <hostname> -t 'tmux -CC new -A -s tmssh'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18665 次 |
| 最近记录: |