我只想快速浏览一下我分离的 GNUscreen会话。是否可以将当前内容转储到 stdout ?就像是
screen --print SESSION_NAME > file.txt
Run Code Online (Sandbox Code Playgroud) 我的场景是这样的:
我有一个在远程位置运行的屏幕会话。此屏幕内是一个基于控制台的程序。在没有屏幕的情况下运行时,该程序在终端中启动并在其标准输入上接受命令。
我想要的是一种远程向屏幕发送命令的方法,以便控制台程序接收该命令。也许是这样的:
我的电脑 -> SSH 自动发送消息 -> 屏幕会话 -> 程序(收到运行命令)
因此,我可以从远程 PC 通过 SSH 命令将命令发送到将它们发送到程序的屏幕。程序接受它们并执行它们。
我试图弄清楚如何制作一个脚本,该脚本能够将命令发送到屏幕,该屏幕将在屏幕正在执行的任何操作中执行。这可能吗,如果可能,如何完成?我已经尝试过 screen -X 等,但它没有执行命令。
我一直在尝试为 minecraft 服务器设置一个自动备份系统,但我在使用屏幕时遇到了问题,特别是在使用“screen -r sessionname -X "/var/minecraft/somebatchfile"”时,没有任何反应。
目前我的流程有点像这样:
screen -m -d -S minecraft /var/minecraft/bin/server_nogui.sh
这将毫无问题地启动 minecraft 服务器。然而,问题是即使像这样简单的跟进也会失败:
screen -r minecraft -X "stop"
我没有收到错误消息或成功消息,并且服务器实际上并没有像它应该的那样断开客户端并关闭。我想我做错了什么,但我不知道是什么。我犯了一些明显的错误吗?我已经阅读了一些手册页,但我自己没有运气弄清楚。
我想向屏幕会话发送一个命令,并在可能的情况下获取输出。
我尝试将命令发送到屏幕会话,正如我在本网站和许多其他网站上发现的那样,但它似乎不起作用:
root@server [~]# screen -X "script -a -c 'ls -l' /tmp/command.log" && cat /tmp/command.log
cat: /tmp/command.log: No such file or directory
root@server [~]#
Run Code Online (Sandbox Code Playgroud)
请注意,只有 1 个 Screen 会话正在运行,所以我省略了 -S 和 -p(也尝试过,但没有效果)。例如:
root@server [~]# screen -p 0 -X stuff "script -a -c 'ls -l' /tmp/command.log" && cat /tmp/command.log
cat: /tmp/command.log: No such file or directory
Run Code Online (Sandbox Code Playgroud)