我正在开发MSCT,这是一个供个人使用的Minecraft服务器管理实用程序(目前为止)。我在屏幕会话中启动服务器,它工作得很好。我只是没有运气让屏幕开始附加或让MSCT恢复屏幕。
回购在这里:https://github.com/nathanpaulyoung/msct/blob/master/msct.go
第48行的相关功能是:
resumeCommand()
这是一个片段:
func resumeCommand() cli.Command {
command := cli.Command{
Name: "resume",
Aliases: []string{"r"},
Usage: "resume a server's screen session",
Action: func(c *cli.Context) {
servername := c.Args().First()
screenname := buildScreenName(servername)
args := []string{"-x", screenname}
cmd := exec.Command("screen", args...)
if serverExists(servername) {
output, _ := cmd.Output()
println(output)
} else {
println("No server known by the name \"" + servername + "\". Either server.jar is missing or the server directory was not configured before compilation.")
os.Exit(999)
}
},
}
return command
}
我觉得它一定是我根本不知道的东西,就像某种特殊的方式来调用新的东西或东西。如果您有任何人知道解决方案,请填写建议或拉取请求。
那就是说,我一直在考虑更多关于这里的真正目标,并认为我会提到这一点,如果产生一个同样令人满意的解决方案,如果不是我的预期。 我希望Minecraft服务器能够继续运行,即使我没有主动查看服务器控制台。这是否意味着当我当前没有进入正在运行的框中,或者(在屏幕的情况下)没有实际连接到屏幕会话,它应该继续运行而不用我的眼睛。如果有一种方法,或许可以使用https://golang.org/x/crypto/ssh/terminal将屏幕内容管道传输到自定义golang终端会话,或者创建类似于Minecraft服务器可以运行的屏幕的方法,那么这些方法也同样令人满意。