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"- Usamoskillpara forçar a destruição do processo wget executado em segundo plano enviando um sinal SIGKILL .