如何运行 socat 以便它在子进程退出后终止

如何运行 socat 以便它在子进程退出后终止

我想server.jar使用附加的 tcp 套接字运行 minecraft,所以我使用:

socat EXEC:"java -jar server.jar nogui" TCP-LISTEN:25567,fork

我可以通过 . 毫无问题地连接(和断开)到服务器telnet。但是,当我停止服务器(通过/stop)时,服务器终止(用 进行检查ps auf,该进程肯定消失了)但socat只是不终止。

我该如何开始索卡特所以它在 EXEC-child 终止后终止? (我已经尝试使用 SYSTEM: 而不是 EXEC: 但那是尝试)

答案1

fork 选项告诉 socat 继续在主进程中监听并处理子进程中的连接。这使其能够同时为多个 Minecraft 服务器实例提供服务,每个连接的客户端对应一个实例。这也意味着 socat 服务器将在所有连接断开后继续侦听新连接,以便它可以继续为连接的客户端提供更多的 Minecraft 服务器实例。

如果您只是删除此 fork 选项,它应该只接受一个连接并为一台 Minecraft 服务器提供服务,然后在服务器停止时退出。

相关内容