GNU/Linux >> Znalost Linux >  >> Linux

Vynutit wget k vypršení časového limitu

Nejjednodušší způsob je použít timeout(1) příkaz, součást GNU coreutils, takže je dostupný prakticky kdekoli, kde je nainstalován bash:

timeout 60 wget ..various wget args..

nebo pokud chcete tvrdě zabít wget, pokud běží příliš dlouho:

timeout -s KILL 60 wget ..various wget args..

Můžete spustit příkaz wget jako proces na pozadí a odeslat SIGKILL, abyste jej po určité době spánku násilně zabili.

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

Vysvětlení:

  • wget ... & - & notace na konci spustí příkaz na pozadí, nikoli na popředí
  • wget_pid=$! - $! je speciální proměnná shellu, která obsahuje id procesu naposledy provedeného příkazu. Zde jej uložíme do proměnné s názvem wget_pid .
  • while [[ -n $(ps -e) | grep "$wget_pid") && "$counter" -lt "$timeout" ]] - Hledejte proces každou sekundu, pokud tam stále je, čekejte do vypršení časového limitu.
  • kill -s SIGKILL "$wget_pid" - Používáme kill násilně zabít proces wget běžící na pozadí odesláním signálu SIGKILL.

Linux
  1. 12 Užitečné příklady příkazů Wget v Linuxu

  2. Ekvivalent Waitpid s časovým limitem?

  3. Zabijte relaci oddělené obrazovky

  1. Jak zabít proces zombie na Linuxu

  2. Jak zabít podřízený proces po daném časovém limitu v Bash?

  3. wget:název staženého souboru

  1. Příkaz Wget v Linuxu s příklady

  2. Procesní potomci?

  3. Příklady příkazů wget v Linuxu