GNU/Linux >> Belajar Linux >  >> Linux

Paksa wget ke batas waktu

Cara termudah adalah dengan menggunakan timeout(1) perintah, bagian dari coreutils GNU, jadi tersedia hampir di mana saja bash diinstal:

timeout 60 wget ..various wget args..

atau jika Anda ingin mematikan wget jika berjalan terlalu lama:

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

Anda dapat menjalankan perintah wget sebagai proses latar belakang dan mengirim SIGKILL untuk mematikannya secara paksa setelah tidur selama waktu tertentu.

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

Penjelasan:

  • wget ... & - & notasi di bagian akhir menjalankan perintah di latar belakang, bukan di latar depan
  • wget_pid=$! - $! adalah variabel shell khusus yang berisi id proses dari perintah yang terakhir dieksekusi. Di sini kita menyimpannya ke variabel bernama wget_pid .
  • while [[ -n $(ps -e) | grep "$wget_pid") && "$counter" -lt "$timeout" ]] - Cari prosesnya setiap satu detik, jika masih ada, terus tunggu hingga batas waktu habis.
  • kill -s SIGKILL "$wget_pid" - Kami menggunakan kill untuk mematikan secara paksa proses wget yang berjalan di latar belakang dengan mengirimkannya sinyal SIGKILL.

Linux
  1. Cara mematikan proses zombie di Linux

  2. 12 Contoh Perintah Wget yang Berguna di Linux

  3. Membunuh Subkulit Secara Diam-diam?

  1. bunuh:perintah tidak ditemukan

  2. Waitpid setara dengan batas waktu?

  3. Apa yang dilakukan kill -- -0?

  1. Perintah Wget di Linux dengan Contoh

  2. Proses Keturunan?

  3. Contoh Perintah wget di Linux