子プロセスが終了した後に終了するようにsocatを実行する方法

子プロセスが終了した後に終了するようにsocatを実行する方法

server.jar接続されたTCPソケットを使用してMinecraftを実行したいので、次のようにします。

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

問題なくサーバーに接続して接続を切断できますtelnet。ただし、サーバーを停止すると(pass /stop)、サーバーはシャットダウンしますが(チェックするとps aufプロセスは確実に消えます)、socatシャットダウンしません。

どうやって始めるの?ソカットでは、EXEC-childが終了した後に終了しますか? (EXEC:代わりにSYSTEM:を試してみましたが、これは試みです。)

答え1

fork オプションは socat に基本プロセスで引き続きリッスンし、子プロセスで接続を処理するように指示します。これにより、接続されている各クライアントに複数のMinecraftサーバーインスタンスを1つずつ同時に提供できます。これはまた、socatサーバーがすべての接続を失った後も引き続き新しい接続を受信し、接続されたクライアントにさらにMinecraftサーバーインスタンスを提供できることを意味します。

このフォークオプションを削除すると、1つの接続のみが許可され、1つのMinecraftサーバーが提供され、サーバーが停止すると終了します。

関連情報