Shell 与golang-repository内的屏幕会话连接时出现问题

Shell 与golang-repository内的屏幕会话连接时出现问题,shell,go,minecraft,gnu-screen,Shell,Go,Minecraft,Gnu Screen,我正在研究MSCT,这是一个供个人使用的小型Minecraft服务器管理实用程序(目前)。我在屏幕会话中启动服务器,它工作正常。我只是没有运气让屏幕开始连接或让MSCT恢复屏幕 回购协议如下: 第48行的相关功能是: resumeCommand() 下面是一个片段: func resumeCommand() cli.Command { command := cli.Command{ Name: "resume", Aliases: []string

我正在研究MSCT,这是一个供个人使用的小型Minecraft服务器管理实用程序(目前)。我在屏幕会话中启动服务器,它工作正常。我只是没有运气让屏幕开始连接或让MSCT恢复屏幕

回购协议如下:

第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
}
我觉得这一定是我完全没有意识到的东西,比如某种特殊的方式来调用一个新的tty或其他东西。如果你们中有人知道这个解决方案,请提出建议或请求


也就是说,我一直在思考这里的真正目标,我想我应该提到这一点,以防产生一个同样令人满意的解决方案,如果不是我所期望的。我希望Minecraft服务器继续运行,即使我没有主动查看服务器控制台。无论这意味着当我当前没有ssh到它正在运行的框中,或者(在screen的情况下)没有实际连接到screen会话时,它应该在我的眼睛没有看到的情况下继续运行。如果有一种方法可以将屏幕内容导入自定义golang终端会话,或者有一种方法可以创建类似于Minecraft服务器可以运行的屏幕的内容,那么这些方法同样令人满意。

Supervisor/systemd/monit都是监控服务器上服务的合适工具。如果你不顾一切地想在围棋中写点什么,也许也是个不错的选择;这实际上相当简单,因为正如您所说,有很多工具(monit、cron、supervisor、screen、tmux、nohup等等)。真正的诀窍是能够在需要时再次访问服务器控制台,以便能够直接向其中发送命令,同时能够看到控制台。我确信,一个功能类似于使用repl行为的解决方案与我想要的不会有太大的不同,但是如果有一种不太老套的方法(比如直接连接到屏幕上),那就更好了。这要看情况而定。您可以发送程序信号,并让它通过Supervisor/systemd等基于这些信号进行交互。否则,您需要从进程的stdin和stdout连接(稍后分离)。它真的只接受通过标准输入的命令吗?!这太奇怪了,特别是对于本来是服务器的东西。Supervisor/systemd/monit都是监视服务器上服务的合适工具。如果你不顾一切地想在围棋中写点什么,也许也是个不错的选择;这实际上相当简单,因为正如您所说,有很多工具(monit、cron、supervisor、screen、tmux、nohup等等)。真正的诀窍是能够在需要时再次访问服务器控制台,以便能够直接向其中发送命令,同时能够看到控制台。我确信,一个功能类似于使用repl行为的解决方案与我想要的不会有太大的不同,但是如果有一种不太老套的方法(比如直接连接到屏幕上),那就更好了。这要看情况而定。您可以发送程序信号,并让它通过Supervisor/systemd等基于这些信号进行交互。否则,您需要从进程的stdin和stdout连接(稍后分离)。它真的只接受通过标准输入的命令吗?!这很奇怪,特别是对于一个服务器来说。