Como executar um programa e obter seu PID em segundo plano

1

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 posso inserir entrada no processo Java?

se eu mudar a linha exec para

exec java -Xmx4096M -Xms4096M -jar minecraft_server.jar & echo $! > pid

ele não me deixa inserir nenhum texto no processo java do servidor Minecraft.

    
por Ivan 28.10.2013 / 22:09

2 respostas

5

Quando você inicia o processo java com exec, seu PID será o mesmo que o do shell script. Então você pode fazer

echo $$ > pid
exec java ...
    
por 28.10.2013 / 22:32
0

exec irá substituir o processo atual, então a execução do bash substitui o bash, e é por isso que você perde o shell interativo. Depois de iniciar o minecraft, fazer ps aux | grep minecraft_server.jar retornará as informações do processo. Se você precisar dele para retornar apenas o id do processo para redirecionar para um arquivo pid ou usar em uma função bash você pode fazer isso: ps aux | grep minecraft_server.jar | awk '{print $2}'

    
por 28.10.2013 / 22:36