Como matar apenas se o processo estiver sendo executado?

6

Atualmente eu uso uma linha como essa no meu arquivo de script sh:

kill 'ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print  }'' 

Mas gostaria de saber como chamá-lo apenas se o processo ( myServer here) estiver em execução?

    
por myWallJSON 31.01.2012 / 13:35

7 respostas

8

Você pode matar processos pelo nome usando pkill ou killall , verifique as man pages deles.

    
por enzotib 31.01.2012 / 14:05
7

Eu costumo usar apenas pgrep e pkill

if pgrep myServer; then pkill myServer; fi
    
por boutch55555 03.10.2014 / 15:17
1

Uma abordagem diferente seria algo assim:

killall PROCESS || echo "Process was not running."

Isso evitará que o código de erro 1 retornado do comando killall , se o processo não existir. A parte echo só entrará em ação, se killall retornar 1 , enquanto ela mesma retornará 0 (sucesso).

    
por codepleb 27.03.2017 / 09:03
0

tente usar:

sudo kill 'pidof process_name'

onde process_name é o nome do processo que você quer matar. O que é ótimo sobre isso é que o pidof listará os pid's de todos os processos correspondentes ao nome dado. Já que matar aceita múltiplos pid's, ele matará todos eles em um único capricho.

Deixe-me saber se isso ajuda.

    
por amandion 31.01.2012 / 13:41
0

Pequeno script que criei com o R & amp; D. Eu espero que você goste

#!/bin/bash

echo " Enter the process name:"
read $proc_name
if pgrep $proc_name
then
echo " $proc_name running "
pkill $proc_name
echo "$proc_name  got killed"
else
echo " $proc_name is not running/stopped "
fi

salve com algum nome como script.sh então

chmod +x script.sh
./script.sh

Em seguida, informe o nome do seu processo.

Nota: Eu tentei muitas vezes com isso e tudo bem.

    
por Ten-Coin 03.10.2014 / 16:01
0

Verifique se o processo existe com pidof . Em caso afirmativo, mate-o:

(! pidof process_name) || sudo kill -9 $(pidof process_name)

O código de saída é sempre 0 após a execução do comando acima.

    
por Juuso Ohtonen 10.05.2016 / 13:42
-1

Eu usaria:

ps x --no-header -o pid,cmd | awk '!/awk/&&/myServer/{print }' | xargs -r kill

O xargs -r diz para executar kill apenas se houver entrada. O ps --no-header -eo pid,cmd obtém a saída em um formato melhor para análise.

    
por Arcege 31.01.2012 / 14:18