Eu usaria o seguinte:
appPid=$(pgrep $application)
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.
Eu usaria o seguinte:
appPid=$(pgrep $application)
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