2015-10-23 3 views
0

Вот команды, с которыми я знаком, делают то, что, по вашему мнению, я хочу: Ради этого вопроса; "pn" = "process name"Поиск имени процесса без использования sudo в Linux

pgrep pn 
sudo /sbin/service pn status 
ps -fC pn 

Проблема Я бегу в Java. pgrep Java даст мне PID всех процессов java. Но если я знаю точное имя приложения Java, давайте назовем его кофе, ничего мне не дает. Тем не менее, sudo /sbin/service Coffee status даст мне точный PID кофе. Проблема в том, что я не хочу и не могу использовать sudo в сценарии, который я пишу. Итак, как мне найти PID для кофе, даже если это приложение Java?

ответ

0

У меня такая же проблема. Там может быть лучше ответы, но то, что я делаю это

ps -efw | grep pn 

Тогда я могу использовать AWK, чтобы получить только колонку, я хочу, чтобы его просто ФИД.

ps -efw | grep pn | awk '{print $2}' 

EDIT: Используйте параметр «w» в ps, чтобы получить широкий выход. Иногда имя не отображается без «w».

w Широкий выход. Используйте эту опцию дважды для неограниченной ширины.

0

Используйте эту команду

ps -ef| grep Coffee 
+0

вопрос я, кажется, с этим является то, что вывод содержит все ПИДы выполняющиеся в любую папку с таким же именем, как кофе /root/coffee/random.sh –

+0

вы можете использовать выражение регулярного выражения grep для лучшего соответствия или если это только проблема с вопросом, то с опцией -i –

0

Вы можете посмотреть на (Java Process Status) инструмент JPS. Я не могу вспомнить, идет ли речь о среде выполнения или нет. В нем перечислены все запущенные java-процессы, их PID и имя приложения Java. Вы можете, возможно, проанализировать вывод, чтобы получить значения, которые вы ищете. Выход

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jps.html

Пример:

jps 
18027 Java2Demo.JAR 
18032 jps 
18005 jstat 
+0

Я получаю Main для определенных PID, а не для конкретного имени приложения, которое, когда я делаю sudo/sbin/service coffee status, знает что это такое –