Eu tenho um script de inicialização do servidor Minecraft que se parece com isso:
#!/bin/bash
cd "$(dirname "$0")"
exec java -Xmx4096M -Xms4096M -jar minecraft_server.jar
Como obtenho o PID do processo java enquanto consigo inserir entrada no processo Java?
se eu mudar a linha exec para
exec java -Xmx4096M -Xms4096M -jar minecraft_server.jar & echo $! > pid
não me permitirá inserir texto no processo java do servidor Minecraft.
Respostas:
Quando você inicia o processo java com o exec, seu PID será o mesmo do script de shell. Então você pode fazer
fonte
screen -x mc-vanilla -X stuff "say doing something blah blahboaweohv $(printf '\r')"
para coisas de entrada em meu servidor minecraft.exec
substituirá o processo atual; portanto, a execução do bash substitui o bash, é por isso que você perde o shell interativo. Depois de iniciar o minecraft,ps aux | grep minecraft_server.jar
o return retornará as informações do processo. Se você precisar retornar apenas a identificação do processo para redirecionar para um arquivo pid ou usar em uma função bash, faça o seguinte:ps aux | grep minecraft_server.jar | awk '{print $2}'
fonte