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ázvemwget_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ámekill
násilně zabít proces wget běžící na pozadí odesláním signálu SIGKILL.
logování paměti RAM je známkou nejvyšší úrovně linuxového procesu
Jak vypnout Debian Linux box přes konzoli