我在屏幕会话中运行 minecraft 服务器。我想向该屏幕会话发送命令并返回命令结果(并将其打印回来)。我可以不使用该screen -L
选项来做到这一点吗?
Bash 脚本内部的演示(显然是错误的!):
result=$(screen -S "minecraft-server" -p 0 -X stuff "list"`echo -ne '\015'`)
printf "$result\n"
答案1
一种方法是使用日志。屏幕上打印的所有内容也会打印到日志中:
我的 minecraft 服务器位于 /home/minecraft,以“minecraft”用户身份运行(不是我)。
发信息:
screen -p 0 -S minecraft-server -X eval 'stuff "say TEST MESSAGE..."\\015'
以多种方式读取输出:
tail /home/minecraft/logs/latest.log
less /home/minecraft/logs/latest.log
加上 CTRL+G 前进到末尾less /home/minecraft/logs/latest.log
加上 CTRL+F 来持续监控新的输出。