Ho vagamente familiarità con i file launchd e plist. Ho usato questi (nel lontano passato) in modo simile agli script di cron per eseguire periodicamente delle cose. Ma capisco che possono anche fare cose "su richiesta".
Ho qualcosa di simile (insieme ad altri file plist trovati su Internet):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.domain.minecraft.bedrock</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/docker</string>
<string>start</string>
<string>mc.bedrock</string>
</array>
<key>Sockets</key>
<dict>
<key>minecraft_bedrock</key>
<dict>
<key>SockType</key>
<string>dgram</string>
<key>SockServiceName</key>
<string>19132</string>
</dict>
</dict>
</dict>
</plist>
Ad un certo punto però, il server non sarà più in uso e forse 5-10 minuti dopo aver ricevuto l'ultimo pacchetto, mi piacerebbe che si chiudesse.
È possibile farlo all'interno di launchd?