Получить конкретный PID и сохранить в файл

Я использую два сервера Minecraft на моей машине. Я хочу знать, что представляет собой pid отдельного mc-сервера, который работает, и поместить его в файл, чтобы я мог убить его позже. Поэтому для этого примера я хочу только узнать, что такое PID для World2, и сохранить его в файл.

Когда я выполняю команду

ps h -o pid,cmd -u minecraft 

, я получаю следующие результаты

31416 /usr/lib/jvm/java-8-oracle/jre/bin/java -Xmx2G -Xms1G -jar /data/mc-server/World1/minecraft_server.jar nogui
31706 /usr/lib/jvm/java-8-oracle/jre/bin/java -Xmx6G -Xms4G -jar /data/mc-server/World2/craftbukkit.jar nogui

Затем я передаю команду grep, используя эту команду

grep World2

Это когда я сталкиваюсь с трудностями, я затем пытаюсь получить хоть один результат. Я попробовал следующее, но просто не могу его получить.

awk '{print $1 > world2.pid}'

Итак, моя полная команда:

ps h -o pid,cmd -u minecraft | grep World2 | awk '{print $1 > world2.pid}'

Я получаю следующую ошибку:

awk: cmd. line:1: {print $1 > world2.pid}
awk: cmd. line:1:                 ^ syntax error
4
задан 5 June 2015 в 15:00

2 ответа

Если Вы хотите поместить перенаправление внутренний awk, необходимо поместить имя файла в кавычки - иначе, awk рассматривает его как переменную, а не литеральную строку:

... | awk '{print $1 > "world2.pid"}'

Однако это было бы более стандартным, чтобы позволить awk записать в стандартный вывод и перенаправление , что т.е.

... | awk '{print $1}' > world2.pid

, С другой стороны, можно хотеть посмотреть на использование pgrep для целой задачи, например, чего-то как

pgrep -f 'World2' > world2.pid
0
ответ дан 5 June 2015 в 15:00

Если Вы помещаете > world2.pid после awk '{print $1}', это должно работать:

ps h -o pid,cmd -u minecraft | grep World2 | awk '{print $1}' > world2.pid

Тогда вывод:

ps h -o pid,cmd -u minecraft | grep World2 | awk '{print $1}'

записан в:

world2.pid

ИЛИ

Как предложенный (благодарит) @JonathanLeffler, Вы могли сохранить использование grep:

ps h -o pid,cmd -u minecraft | awk '/World2/ {print $1}' > world2.pid
0
ответ дан 5 June 2015 в 15:00

Другие вопросы по тегам:

Похожие вопросы: