linux - 附加到 GNU screen ,然后执行命令

标签 linux bash ssh gnu gnu-screen

我见过一些类似的问题,但解决方案似乎对我的情况不起作用。

我正在尝试通过 SSH 连接到节点机器上的特定 screen 实例,然后执行一些命令

我目前的流程是这样的:

在远程机器上我创建了一个 screen 实例:

screen -dmS "my_screen"

在我的本地机器上,我做类似的事情:

ssh <user>@<remote> -a -x -t screen -x -r my_screen -X stuff 'ruby my_script.rb'

但输出只是:

(ip) 处的连接已关闭。

并且 ruby​​ 脚本没有运行。

如果我将命令分开,那么脚本会正确运行,例如:

ssh <user>@<remote> -a -x -t screen -x -r my_screen

它连接到 screen ,然后我手动输入:

ruby my_script.rb
exit

然后脚本按预期在 screen 上执行。

向 screen 发送命令的正确方法是什么?

最佳答案

在您的第二个示例中,您通过在控制台中键入命令来执行命令。如果这是您想要模拟的行为,您可以使用 stuff 命令让 screen 将您的文本粘贴到控制台中以执行它。

ssh <user>@<remote> -a -x -t screen -x -r my_screen -X stuff \"ruby my_script.rb^M\"

(注意 ^M 是使用 CTRL-V、CTRL-M 生成的)。

这不会向您打开的终端显示任何内容,但是当您重新连接到 screen 时,您应该会看到命令的输出(假设在您发送命令时 screen 在控制台窗口中,这是这种方法的风险)。

关于linux - 附加到 GNU screen ,然后执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39007353/

相关文章:

linux - 使用 Groovy 和 SED 命令用变量替换字符串

regex - 如何使用文件动态指定模式并根据该目录中的模式获取文件?

windows - 上传大文件时出现WinSCP错误代码4

linux - Redis CPU使用率用什么单位显示

c - 当 main 什么都不返回时,为什么我得到了 linux c 中 main 调用的最后一个函数的返回值?

linux - 哪些 IMS 软件包可用于 Ubuntu?

linux - 为什么我的/proc/kallsyms文件不包含System.map中的所有符号?

Bash函数杀死进程

linux - 确定 SCP 传输是否失败的最佳方法

bash - 在 Bamboo 中通过 SSH 的 nohup 命令不会退出