Selasa, 14 Maret 2006

Script crontab untuk wget

KambingPada sistem operasi Linux, kita sudah tidak awam dengan yang namanya ‘wget’. Adapun fungsinya anda yang bergelut di mesin linux, dah pasti tau kegunaannya…saja jelaskan sedikit --walaupun baru belajar linux-- tentang wget, yaitu software pada linux yang berfungsi sebagai downloader/download manager yang text based, mensupport protocol HTTP, HTTPS dan FTP. Software ini dapat anda dapatkan dengan tanpa biaya sedikitpun karena FREE! karena menganut GNU/GPL, jadi bebas untuk didistribusikan lagi.

Adapun, paketnya dapat anda dapatkan di gnu.org untuk paket source-nya. Untuk anda yang berjalan di bawah platform REDHAT, bisa dengan mencari paket RPM di rpmfind.net. Sebenarnya, wget sudah ada pada bawaan distro linux yang anda install…tetapi klo memang anda ingin pake yang terbaru, silahkan datang menuju link yang saya sebutkan sebelumnya.

Direktori kerja kita adalah di ~/download/mp3.
Disini kita akan memulai membuat script-nya dulu, kemudian script ini akan di jalankan oleh crontab.
Buatlah file dengan nama ’start-dl.sh’, gunakan editor ‘vi’ atau ‘nano’. Kemudian ketiklah

[sourcecode language='cpp']
#!/bin/sh

case "$1" in
start)
URLFILE=$(cat url.file)
wget -c -b -T 0 -t 0 -o log -i $URLFILE &
ps -auxww | grep $URLFILE | grep -v grep | awk '{ print $2 }' > wget.pid
;;

stop)
kill 'cat ./wget.pid'
rm -f ./wget.pid
;;

*)
echo "Gunakan perintah : $0 {start|stop}"
esac
exit 0
[/sourcecode]

Kemudian, save dan ‘chmod u+x start-dl.sh’ agar bisa di eksekusi.
Buatlah sebuah file biasa dengan nama the-magic-finger-mp3.txt’, kemudian ketikan url file yang akan di download, misalnya ‘http://www.mp3.com/files/balawan/the-magic-finger.mp3′. Save.
Buatlan sebuah file biasa lagi dengan nama ‘url.file’, kemudian ketikan nama file yang menyimpan url yang tertulis diatas seperti the-magic-finger-mp3.txt’. Save. Adapun fungsi dari file ‘url.file’ adalah menyimpan variable yang fungsinya akan dipanggil untuk membuat sebuat pid file. Adapun script yang memanggil variable tersebut seperti yang telah di tuliskan, yaitu :

[sourcecode language='cpp']
URLFILE=$(cat url.file)
wget -c -b -T 0 -t 0 -o log -i $URLFILE &
ps -auxww | grep $URLFILE | grep -v grep | awk '{ print $2 }' > wget.pid
[/sourcecode]

dan pada fungsi awk’{print $2}’ > wget.pid adalah mengambil karakter pada layar yang dimana print $2 adalah mencetak pada kolom ke 2, yaitu urutan process id yang sedang running, kemudian di simpan ke sebuah file yang bernama wget.pid, yang dimana file ini akan digunakan oleh crontab.

Kemudian , buat sebuah file dengan nama ‘cronwget.sh’, ketikan :

[sourcecode language='cpp']
#!/bin/sh

if test -r ./wget.pid; then
WGETPID=$(cat ./wget.pid)
if $(kill -CHLD $WGETPID >/dev/null)
then
exit 0
fi
fi
./start-dl.sh start &>/dev/null
[/sourcecode]

Chmod file ‘cronwget.sh’ menjadi ‘chmod u+x cronwget.sh’ agar bisa di eksekusi.

Kemudian, atur waktu crontab, pada saat 5 menit akan men-check proses wget tadi, jika proses masih running, lanjutkan download. Tetapi, jika proses download terhenti, jalankan kembali. Proses terhenti bisa karena ‘request time out’ atau komputer shutdown atau restart. Disini peran crontab di perlukan.

Sekarang, edit crontab dengan command : ‘crontab -e’, maka crontab akan meng-edit dengan editor ‘vi’. Kemudian isikan dengan :
[sourcecode language='cpp']
5 * * * * cd ~/download/mp3;./cronwget.sh >/dev/null
[/sourcecode]
kemudian, save!

Sampai disini, selesai. Tinggal tunggu 5 menit, crontab akan mengeksekusi cronwget tadi. Jika sudah lebih dari 5 menit, ketikan : ps -aux untuk memastikan apakah proses sudah running.

NOTE : Untuk nama file url seperti ‘the-magic-finger-mp3.txt’, jika anda me-running-kan beberapa download, sangat di sarankan/harus untuk pemberian nama file url berbeda. Hal ini sudah saya jelaskan seperti tertulis diatas.

Semoga bermanfaat!

4 komentar:

  1. Salam kenal pak,
    mohon bantuannya pak...

    saya masih nyoba masuk dicrontab untuk lakukan wget file zip tiap 3 jam. lalu di ekstrak di /var/www/html.

    file zipnya dapet pak, tapi waktu mo diekstrak pake unzip koq ga bisa ya pak..??

    di crontab saya masukkan.
    3 * */3 * * root wget -c /http:172.19.1.1/indahku/peristiwa.zip > /var/www/html/
    terimakasih pak

    BalasHapus
    Balasan
    1. nên khó coi, đây chính là vết sẹo của U Minh Tông, giờ lại bị Nhạc Thành nói ra, ngay cả lão tổ của bọn họ cũng bị sỉ nhục, đây là một cái tát rất lớn.

      Ở bên trong U Minh tông, Khương Luân Xa hung hăng nhìn Nhạc Thành, hận không thể lập tứcđồng tâm
      game mu
      cho thuê nhà trọ
      cho thuê phòng trọ
      nhac san cuc manh
      số điện thoại tư vấn pháp luật miễn phí
      văn phòng luật
      tổng đài tư vấn pháp luật
      dịch vụ thành lập công ty trọn gói
      http://we-cooking.com/
      chém gió giết tên tiểu tử này.

      - Tiểu tử này đúng là ngông cuồng.

      Đỗ Kiều Kiều chăm chú nhìn Nhạc Thành, trong lòng nghi hoặc không thôi.

      Trong đại sảnh tất cả mọi người đều nhìn Nhạc Thành và Khương Sơn ở trên không trung, tin tức U Minh Tông bị Hồ Điệp Cốc đánh bại đã sớm truyền ra ngoài, bọn họ dĩ nhiên là biết.

      Trầm Linh, Lê Tiêu Dao còn có người của Vạn kim Môn, Cuồng Sư Môn thì lo lắng cho Nhạc Thành, hiện tại hắn đã bị trọng thương, Khương Sơn lại có thực lực tứ tinh Đấu Tôn, so với Dương Thiếu Phong còn mạnh hơn mốt bậc, nếu như chiến đấu thì Nhạc Thành bị thiệt thòi quá lớn.

      - Chủ nhân có sao không?

      Nhìn thấy chủ nhân bị trọng thương, Tứ Sí Ma Ưng và Thanh Bối Ma Ngưu lo lắng không thôi.

      - Cái này không công bằng, chúng ta bị thương, người của U Minh Tông đúng là không

      Hapus
  2. mungkin file zip corrupt atau file zip tersebut terbentuk, tetapi bukan zip yang terdownload dengan benar.

    mungkin bisa dicoba pake gini:

    3 * */3 * * cd /var/www/html/; wget -c http://172.19.1.1/indahku/peristiwa.zip > /dev/null


    maksud diatas: pindah ke direktori tujuan, kemudian download pada direktori tersebut.

    semoga membantu dan terima kasih udah berkunjung.

    BalasHapus
  3. permisi boleh nubi bertanya?
    command wget untuk di cronjob, supaya tidak tersimpan ke file gimana ya parameternya?

    BalasHapus