processamento de texto bash e mensagem de erro

1

por exemplo eu tenho esse script que mata o firefox

ps x | grep firefox | grep -v grep | awk '{print }'| xargs kill -9

mas quando não há o firefox em execução, ele cuspirá:

Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

Qual é a maneira mais fácil de exibir a mensagem de erro?

    
por UAdapter 31.10.2011 / 09:27

1 resposta

5

Seu comando para detectar processos do Firefox é horrível, ele também inclui processos com o "firefox" em sua linha de comando (por exemplo, nome do diretório). Use pidof firefox em vez disso.

Você pode primeiro salvar os PIDs, verificar se está (não) vazio e ajustar o comportamento:

pids=$(pidof firefox)
if [ -n "$pids" ]; then
    kill -9 $pids
else
    echo "No Firefox processes found"
fi

Ou use killall em vez disso, se não precisar de uma mensagem de erro:

killall firefox
    
por Lekensteyn 31.10.2011 / 09:44