我一直在尝试为 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"
我没有收到错误消息或成功消息,并且服务器实际上并没有像它应该的那样断开客户端并关闭。我想我做错了什么,但我不知道是什么。我犯了一些明显的错误吗?我已经阅读了一些手册页,但我自己没有运气弄清楚。
你必须给参数-X一个screen命令,我认为你想在screen会话中“填充”一个 minecraft-server 命令。
screen -r minecraft -p 0 -X stuff "stop $(printf '\r')"
Run Code Online (Sandbox Code Playgroud)
在printf发送一个回车,因此命令“停止”被执行。-p 0确保将字符发送到初始屏幕窗口。
要发送它,ssh您必须将命令包含在其中" "(您也可以使用` `,但这不会让您执行命令替换)。
ssh -t -i ~/.ssh/id_dsa server_user@server_address "screen -r minecraft -X stuff "even other_server_name is getting in on the action\! $(echo -ne '\r')""
Run Code Online (Sandbox Code Playgroud)
当心这!是一个保留字,你必须逃避它。
也可以在命令中包含用户生成的换行符以执行它:
ssh -t -i ~/.ssh/id_dsa server_user@server_address "screen -r minecraft -X stuff 'even other_server_name is getting in on the action!
'"
Run Code Online (Sandbox Code Playgroud)
!这里不需要逃避。
| 归档时间: |
|
| 查看次数: |
5776 次 |
| 最近记录: |