GNU/Linux >> Tutoriels Linux >  >> Linux

Forcer wget à expirer

Le plus simple est d'utiliser le timeout(1) commande, faisant partie de GNU coreutils, donc disponible à peu près partout où bash est installé :

timeout 60 wget ..various wget args..

ou si vous voulez hard-kill wget s'il tourne trop longtemps :

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

Vous pouvez exécuter la commande wget en tant que processus d'arrière-plan et envoyer un SIGKILL pour le tuer de force après avoir dormi pendant un certain temps.

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

Explication :

  • wget ... & - le & la notation à la fin exécute la commande en arrière-plan par opposition au premier plan
  • wget_pid=$! - $! est une variable shell spéciale qui contient l'ID de processus de la dernière commande exécutée. Ici, nous l'enregistrons dans une variable appelée wget_pid .
  • while [[ -n $(ps -e) | grep "$wget_pid") && "$counter" -lt "$timeout" ]] - Recherchez le processus toutes les secondes, s'il est toujours là, continuez d'attendre jusqu'à un délai d'expiration.
  • kill -s SIGKILL "$wget_pid" - Nous utilisons kill pour tuer de force le processus wget exécuté en arrière-plan en lui envoyant un signal SIGKILL.

Linux
  1. Comment tuer un processus zombie sous Linux

  2. kill :commande introuvable

  3. Tuer la session d'écran détaché

  4. Comment tuer un processus enfant après un délai d'attente donné dans Bash?

  5. Que fait kill -- -0 ?

Comment tuer un processus sous Linux

Commande Kill sous Linux

Commande de temporisation sous Linux

Comment forcer Wget à utiliser une connexion IPv4 ou IPv6

Comment tuer un processus sous Linux

Comment augmenter le délai d'attente dans le mastic?