Найти ProcessID - pidof не работает

Мне нужно попытаться найти ProcessId процесса.

Изначально я делал:

application="/home/user/apps/appName.app"
appPid=$(pidof -x $application)

Это нормально работало.

Однако теперь выясняется, что приложение может запускаться из разных мест, например:

/home/user/apps/appName.app
/home/user/desktop/appName.app
/home/user/desktop/link to apps/appName.app

Итак, я попытался просто выполнить

application="appName.app"
appPid=$(pidof -x $application) 

Но это не нашло совпадений. Я предполагаю, что pidof требует для соответствия полный путь.

Как еще я могу получить ProcessId?


Думаю, мне нужно подробнее объяснить.

Если я сделаю

ps aux | grep application.app

, я получу два результата.

user 29912 . . . . /home/user/apps/application.app
user 12345 . . . . grep application.app

Если я сделаю

var1=`pgrep application.app`
echo $var1

, результат будет пустым. Это должно быть 29912.

0
13.01.2016, 11:56
2 ответа

Я бы использовал следующее:

appPid=$(pgrep $application)
1
28.01.2020, 02:35

Сам pgrep возвращает идентификаторы процессов. Используйте:

     $pgrep <process_name>


     $pgrep bash
     3896
     4013
     4115

Если вы хотите сохранить вывод в переменной:

   var1=`pgrep <appname>`


  pids=`pgrep bash`
  echo $pids
  3896 4013 4115
1
28.01.2020, 02:35

Теги

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