Hoje precisei criar um script no Linux que matasse um processo pelo nome, e não pelo número. Resolvi compartilhar aqui no blog:
#!/bin/bash # Autor: Tiago Passos SHELL=/bin/sh PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin #SCRIPT QUE MATA (PELO NOME) O PROGRAMA ESPECIFICADO #INFORME O NOME (OU TRECHO DO NOME) DO PROGRAMA QUE VOCE QUER MATAR programa=nano #NUMERO DO PROCESSO DO PROGRAMA processo=$(ps -ef | grep $programa | grep -v grep | awk '{print $2}') kill $processo >> /var/log/killpelonome
Também é possível usar o pgrep nessa lógica, e ficaria até mais limpo, mas pro meu caso específico não deu pra usar. Isso porque estava querendo matar (inicialmente) um programa executado pelo java, e precisaria idenficar esse programa pelos parâmetros que estavam sendo passados.
O pgrep (até onde sei) não identifica os parâmetros, mas apenas o nome, então não funcionaria em todas as situações.
janeiro 31st, 2013 on 17:52
O comando killall faz isso.
agosto 22nd, 2013 on 23:25
Tiago Passos,
show de bola, funciona perfeitamente para o que eu preciso.
Valeu Mesmo.
Abs
março 18th, 2016 on 13:31
Tiago,
Obrigado por compartilhar, precisava de um shell desses, e ele resolveu o problema.
julho 11th, 2017 on 13:34
Muito obrigado, me ajudou muito.