As linhas de saída não são redirecionadas para / dev / null porque não são STDOUT / STDERR do processo kill . Eles são produzidos pelos mecanismos de controle de tarefas do shell.
Se você estiver usando bash , poderá executar um rejeitar imediatamente após a invocação da tarefa:
while true; do
/usr/bin/dostuff -a -b -c
### remove from shell job table
disown
PID=$(pidof -o %PPID /usr/bin/dostuff)
sleep 1;
kill -KILL $PID &>/dev/null
echo "hello"
done
Eu testei isso em bash v3.2.39 no Debian Lenny, com /bin/sleep 10 &
no lugar do comando /usr/bin/dostuff
acima:
./tmp.sh
hello
hello
hello
hello
^C