GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Timeout für wget erzwingen

Am einfachsten ist es, den timeout(1) zu verwenden Befehl, Teil von GNU Coreutils, also so ziemlich überall verfügbar, wo Bash installiert ist:

timeout 60 wget ..various wget args..

oder wenn Sie wget hart töten wollen, wenn es zu lange läuft:

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

Sie können den wget-Befehl als Hintergrundprozess ausführen und einen SIGKILL senden, um ihn nach einer bestimmten Zeit im Ruhezustand zwangsweise zu beenden.

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

Erklärung:

  • wget ... & - die & Notation am Ende führt den Befehl im Hintergrund statt im Vordergrund
  • aus
  • wget_pid=$! - $! ist eine spezielle Shell-Variable, die die Prozess-ID des zuletzt ausgeführten Befehls enthält. Hier speichern wir es in einer Variablen namens wget_pid .
  • while [[ -n $(ps -e) | grep "$wget_pid") && "$counter" -lt "$timeout" ]] - Suchen Sie jede Sekunde nach dem Prozess, wenn er noch da ist, warten Sie weiter, bis ein Timeout-Limit erreicht ist.
  • kill -s SIGKILL "$wget_pid" - Wir verwenden kill um den im Hintergrund laufenden wget-Prozess zwangsweise zu beenden, indem Sie ihm ein SIGKILL-Signal senden.

Linux
  1. Nachkommen verarbeiten?

  2. Subshell stillschweigend töten?

  3. wget-Befehlsbeispiele unter Linux

  4. Beenden Sie die getrennte Bildschirmsitzung

  5. Was macht kill -- -0?

So beenden Sie einen Prozess in Linux

Kill-Befehl unter Linux

Timeout-Befehl in Linux

So zwingen Sie Wget, eine IPv4- oder IPv6-Verbindung zu verwenden

Wie man einen Prozess unter Linux beendet

Wie kann man das Timeout in Putty erhöhen?