我需要在本地执行脚本。问题是,它需要使用screen
并发送 ctrl d 命令。
我该怎么做?该脚本将位于我的本地 Windows 计算机上。我可以使用winscp、putty、mingw 和其他应用程序。
答案1
您可以使用预计(期待首页,包含在大多数 UNIX 软件发行版中)来编写与文本终端中运行的程序的交互脚本。
但是,可能有一种更简单的方法来完成您想要做的事情。您可以从任何命令行向 screen 会话发送命令,并且可以使用 screen 的stuff
命令将输入插入到 screen 窗口中。看为什么 screen 似乎对通过 -X 传递的命令没有执行任何操作?,从外部将输入发送到屏幕会话举些例子。
screen -S sessionname -p windowname -X stuff $'\004'
如果此答案对您没有帮助,请提供有关您要执行的操作的更多信息。
答案2
从屏幕(1)手册
-d|-D [pid.tty.host] does not start screen, but detaches the elsewhere running screen session. It has the same effect as typing "C-a d" from screen’s controlling terminal. -D is the equivalent to the power detach key. If no session can be detached, this option is ignored. In combination with the -r/-R option more powerful effects can be achieved:
我通常习惯screen -AmdS sessionname commandline
在屏幕会话中运行命令行并立即分离。例如,从 cronjob 运行屏幕
@reboot /usr/bin/screen -AmdS shoutcast /home/foo/sc_serv /home/foo/sc_serv.conf
在现有的分离屏幕上添加新命令并立即分离。
screen -dr sessionname -X commandline
答案3
你的安排对我来说没有任何意义。您是在问如何从屏幕外部将密钥发送到屏幕吗?您可能会用于expect
该场景。您还可以使用自定义配置文件启动屏幕,将 ctrl-d 更改为更易于发送的内容。