如何在多连接会话中向正确的用户发送“screen -X”命令

如何在多连接会话中向正确的用户发送“screen -X”命令

假设我想在 GNU 中绑定一个按键序列screen以跳转到特定窗口。我可能会这样做:

bind ^t exec screen -X select foo

(我故意简化了这一点;现实世界的应用程序execsa 命令会动态地确定要切换到哪个窗口,然后运行该screen -X命令。)

伟大的;这很好用。当我screen -x从不同的机器附加(通过)到同一会话时,问题就出现了。在新机器上,^a^t按预期执行并切换到窗口。但是,如果我返回到原来的机器,保留新机器的连接,然后^a^t切换到窗口在新机器上。如果我拆下新机器,一切都会恢复正常。

请注意,这是一个会话,因此-S没有任何用处。该会话不受密码保护。它似乎也与机器无关exec:虽然在原始机器上手动运行screen -X select foo内部screen工作正常,但在原始机器上的单独终端(即外部screen)中运行它仍然会切换另一台机器上的窗口。

如何强制screen -X只影响正在运行的同一台计算机上的附加用户? (如果更容易的话,影响用户/机器也是可以接受的。)

答案1

我认为该at命令应该可以解决您所看到的问题。at在 screen 的 man 的命令描述中,它说:

[标识符][#|*|%] 命令 [args ... ]。
...
在共享窗口中,将为每个连接的显示器重复该命令。
...

听起来应该在两个地方切换窗口。

相关内容