我正在尝试创建一个独立的屏幕,然后向其发送命令,但这似乎不起作用。
如果我输入以下命令:
$ screen -ls
No Sockets found in /var/run/screen/S-ec2-user.
$ screen -dmS myscreen
$ screen -ls
There is a screen on:
9175.myscreen (Detached)
1 Socket in /var/run/screen/S-ec2-user.
$ screen -S myscreen -X ls
然后我附加到屏幕上以查看命令是否执行:
$ screen -r myscreen
我得到的只是一个空白的命令行,好像什么都没发生一样。
有谁知道为什么会失败,以及我可以使用什么命令来真正让命令在屏幕内运行?
注意:如果可能的话,我希望与屏幕保持分离,只从外部向屏幕发送命令。这是因为我的计划是使用自动化方式(例如 bash 脚本)运行多个屏幕。
答案1
终于让它工作了。
看着screen
一些使用的代码示例,似乎 -X 参数需要stuff
实际命令之前有单词:,并且命令必须用双引号括起来(“xyz”)。
此外,要使命令运行,Enter必须同时发送击键。这篇关于插入特殊字符的文章Ctrl,我设法通过按+ V,输入了按键Enter。
命令行如下所示:
$ screen -S myscreen -X stuff 'ls^M'