1

У меня есть скрипт запуска сервера Minecraft, который выглядит следующим образом:

#!/bin/bash
cd "$(dirname "$0")"
exec java -Xmx4096M -Xms4096M -jar minecraft_server.jar

Как я могу получить PID процесса Java при возможности ввода ввода в процесс Java?

если я изменю строку exec на

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

это не позволит мне вводить какой-либо текст в Java-процесс сервера Minecraft.

2 ответа2

5

Когда вы запускаете процесс Java с помощью exec, его PID будет таким же, как и у сценария оболочки. Так что вы можете сделать

echo $$ > pid
exec java ...
0

exec заменит текущий процесс, поэтому запуск из bash заменяет bash, поэтому вы теряете интерактивную оболочку. После запуска Minecraft, делая ps aux | grep minecraft_server.jar вернет информацию о процессе. Если вам нужно вернуть только идентификатор процесса для перенаправления в файл pid или использовать функцию bash, вы можете сделать это: ps aux | grep minecraft_server.jar | awk '{print $2}'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .