我的场景是这样的:
我有一个在远程位置运行的屏幕会话。该屏幕内是一个基于控制台的程序。当没有屏幕运行时,该程序在终端中启动并接受其标准输入上的命令。
我想要的是一种远程发送命令到屏幕的方法,以便控制台程序接收该命令。也许是这样的:
我的电脑 -> SSH 自动发送消息 -> 屏幕会话 -> 程序(收到运行命令)
因此,我可以从远程 PC 通过 SSH 命令发送到屏幕,屏幕再将它们发送到程序。程序接受它们并执行它们。
答案1
如果我理解正确,您想将输入发送到屏幕会话内运行的程序。您可以使用 screenstuff
命令来完成此操作。使用 screen 的-X
选项在 screen 会话中执行命令而不附加到它。
screen -S sessionname -p windowname -X stuff 'command1
command2
'
如果您想查看程序的输出,请参阅hardcopy
、log
和logfile
命令。
答案2
要将命令发送到分离的屏幕:
screen -S <screen_name> -X stuff "command blah blah blah\n"
- 确保命令末尾有“\n”。如果不附加“\n”,则命令将被发送但不会启动。
边注:如果您想离开当前所在的目录而不结束它screen
,请使用以下键绑定快捷键来分离它:( )ctrl + a + d
C-a-d