Localizar ProcessID - pidof não funciona

0

Eu preciso tentar encontrar o ProcessId de um processo.

Inicialmente eu estava fazendo:

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

Isso funcionou bem.

No entanto, agora a aplicação pode ser executada em vários locais, como:

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

Então eu tentei simplesmente fazer

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

Mas isso não encontrou correspondências. Eu suponho que pidof requer um caminho completo para corresponder.

De que outra forma posso obter o ProcessId?

Acho que preciso explicar melhor.

Se eu fizer

ps aux | grep application.app

Eu recebo dois resultados.

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

Se eu fizer então

var1='pgrep application.app'
echo $var1

o resultado está em branco. Deve ser 29912.

    
por IGGt 13.01.2016 / 10:09

2 respostas

1

Eu usaria o seguinte:

appPid=$(pgrep $application)
    
por 13.01.2016 / 10:23
1

O próprio pgrep retorna os ids do processo. Use:

     $pgrep <process_name>


     $pgrep bash
     3896
     4013
     4115

Se você quiser que a saída armazene na variável:

   var1='pgrep <appname>'


  pids='pgrep bash'
  echo $pids
  3896 4013 4115
    
por 13.01.2016 / 10:43

Tags