GNU/Linux >> Tutoriales Linux >  >> Linux

Forzar wget a tiempo de espera

La forma más fácil es usar el timeout(1) comando, parte de GNU coreutils, por lo que está disponible prácticamente en cualquier lugar donde esté instalado bash:

timeout 60 wget ..various wget args..

o si desea matar a wget por mucho tiempo:

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

Puede ejecutar el comando wget como un proceso en segundo plano y enviar un SIGKILL para matarlo a la fuerza después de dormir durante un cierto período de tiempo.

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

Explicación:

  • wget ... & - el & la notación al final ejecuta el comando en segundo plano en lugar de en primer plano
  • wget_pid=$! - $! es una variable de shell especial que contiene la identificación del proceso del comando ejecutado más recientemente. Aquí lo guardamos en una variable llamada wget_pid .
  • while [[ -n $(ps -e) | grep "$wget_pid") && "$counter" -lt "$timeout" ]] - Busque el proceso cada segundo, si todavía está allí, siga esperando hasta un límite de tiempo de espera.
  • kill -s SIGKILL "$wget_pid" - Usamos kill para eliminar a la fuerza el proceso wget que se ejecuta en segundo plano enviándole una señal SIGKILL.

Linux
  1. Cómo matar un proceso zombie en Linux

  2. 12 ejemplos útiles de comandos Wget en Linux

  3. Comando Wget en Linux con ejemplos

  4. Descendientes del proceso?

  5. Ejemplos de comandos wget en Linux

Cómo matar un proceso en Linux

Comando matar en Linux

Comando de tiempo de espera en Linux

Cómo forzar a Wget a usar una conexión IPv4 o IPv6

Cómo MATAR un proceso en Linux

¿Cómo aumentar el tiempo de espera en masilla?