Você pode matar processos pelo nome usando pkill
ou killall
, verifique as man pages deles.
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?
Você pode matar processos pelo nome usando pkill
ou killall
, verifique as man pages deles.
Eu costumo usar apenas pgrep e pkill
if pgrep myServer; then pkill myServer; fi
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).
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.
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.
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.
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.
Tags command-line bash kill