Obtenha o id do processo de ps -ef grep (ou Pare um aplicativo antes de removê-lo)

0

Eu tenho um rpm e quero na desinstalação para verificar se o meu aplicativo está em execução e se é parar antes de executar a desinstalação.
Meu serviço é executado em um usuário específico. Como posso fazer isso usando bash in rpm spec?
Ou seja Como posso saber que meu serviço está funcionando para que eu possa pará-lo?

Atualização: Se eu faço ps -ef|grep myUser como posso obter o id do processo do resultado para que eu possa fazer kill -9 ?

    
por Jim 30.03.2012 / 09:25

2 respostas

2

Você pode fazer

ps -U someUserName -o pid,comm | awk '/someProcessName/{print $1}'

(editei minha resposta e peguei a linha acima da minha resposta para sua pergunta relacionada ou similar [1], ou melhor ainda

pgrep -u myuser mybinaryname

para obter o ID do processo ou até mais simples

pkill -u myuser mybinaryname

para matar diretamente o processo.

Faça alguns testes para determinar o nome binário e certifique-se de que ele não colida com outros processos.

( pgrep e pkill provavelmente já estão instalados em seu sistema. Caso contrário, eles são (em sistemas baseados em Debian) no pacote procps ).

Observe que um usuário normal provavelmente não tem privilégios para matar os processos de outros usuários, por exemplo, pkill mybinaryname precisa ser executado com privilégios elevados. Parece um script executado pelo root (já que está desinstalando programas), então isso pode não ser um problema.

[1]: awk seleciona o primeiro campo não-branco recolocando os espaços iniciais que aparecerão se pid < 10000 (no meu sistema, uma vez que pidmax é 32767), o que poderia confundir cut .

    
por 30.03.2012 / 10:12
0
ps wp PID|grep PID

Você pode fazê-lo sem o grep - você encontrará com o grep que você remove o cabeçalho.

    
por 24.08.2013 / 00:54