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 depanwget_pid=$!
-$!
adalah variabel shell khusus yang berisi id proses dari perintah yang terakhir dieksekusi. Di sini kita menyimpannya ke variabel bernamawget_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 menggunakankill
untuk mematikan secara paksa proses wget yang berjalan di latar belakang dengan mengirimkannya sinyal SIGKILL.
mencatat memori RAM tanda air tinggi dari proses Linux
Cara mematikan kotak Debian Linux melalui konsol