Você pode executar o comando wget como um processo em segundo plano e enviar um SIGKILL para forçá-lo a matá-lo depois de dormir por um determinado período de tempo.
wget ... &
wget_pid=$!
counter=0
timeout=60
while [[ -n $(ps -e) | grep "$wget_pid") && "$counter" -lt "$timeout" ]]
do
sleep 1
counter=$(($counter+1))
done
if [[ -n $(ps -e) | grep "$wget_pid") ]]; then
kill -s SIGKILL "$wget_pid"
fi
Explicação:
-
wget ... &
- a notação&
no final executa o comando em segundo plano em oposição ao primeiro plano -
wget_pid=$!
-$!
é uma variável de shell especial que contém o ID do processo do comando executado mais recentemente. Aqui nós o salvamos em uma variável chamadawget_pid
. -
while [[ -n $(ps -e) | grep "$wget_pid") && "$counter" -lt "$timeout" ]]
- Procure o processo a cada segundo, se ainda estiver lá, espere até o limite de tempo limite. -
kill -s SIGKILL "$wget_pid"
- Usamoskill
para forçar a destruição do processo wget executado em segundo plano enviando um sinal SIGKILL .