INTERNET TROUBLESHOOTING CRON JOB


Kategori :   Internet
artikel :   Troubleshooting Cron Job
Dilihat :   984 Kali
Sumber :   www.masterweb.net

Cron adalah fasilitas yang tersedia di sistem operasi Unix untuk menjalankan sebuah perintah secara berkala. Frekuensi waktu terkecilnya adalah 1 menit sekali. Frekuensi terbesarnya hingga beberapa tahun sekali. Dapat juga dipilih ingin menjalankan setiap hari tertentu, setiap berapa jam sekali, pada menit keberapa, dst.

Untuk menggunakan crontab, saat ini silakan SSH ke server hosting. (Aktifkan dulu fasilitas SSH di control panel jika masih mati). Lalu ketikkan:

 crontab -e

(Catatan: lambang " " menunjukkan prompt shell, bukan untuk diketik secara literal).

Anda akan masuk ke editor dan siap mengetikkan daftar perintah dalam sebuah format yang disebut crontab ("cron table"). Adapun format crontab ini dijelaskan dalam manual page Unix (dapat dilihat dengan mengetikkan perintah "man 5 crontab" pada prompt shell).

Jika Anda tidak suka editor default, Anda bisa keluar lalu mengetikkan seperti ini:

 EDITOR=joe crontab -e

untuk memilih editor joe, misalnya. Bisa juga editor-editor lain seperti pico, emacs, vim, dll.

Setelah membuat crontab, save dan keluarlah dari editor. Maka crontab akan terpasang.

Untuk melihat crontab saat ini, gunakan:

 crontab -l

Untuk menghapus crontab:

 crontab -r


Format crontab

Pada dasarnya setiap baris berisi 6 kolom. Lima kolom pertama adalah spesifikasi waktu yang diinginkan. Kolom ke 6 dan seterusnya berisi perintah yang ingin dijalankan. Lima kolom waktu berturut-turut adalah menit, jam, hari, bulan, day of week. Tiap kolom waktu dapat diisi angka, deretan angka dipisahkan koma, atau *, atau */N di mana N adalah angka. Contoh:

0 * * * * PERINTAH...

artinya jalankan pada menit ke-0 di setiap jam/setiap hari/setiap bulan/day of week apa saja. Perintah akan dijalankan sekali setiap jam yaitu pada menit ke-0 (contoh: 00:00, 01:00, dst).

*/5 * * * * PERINTAH...

Jalankan setiap 5 menit sekali.

30 13 * * * PERINTAH...

Jalankan sekali sehari, yaitu pada pukul 13:30 (waktu server).

0 0 * * 6,7 PERINTAH...

Jalankan sekali sehari setiap tengah malam (pk 00:00) tapi hanya pada weekend (6=sabtu, 7=minggu).


FAQ

Saya sudah membuat crontab, mengapa saya tidak melihat hasilnya apa-apa?

Tambahkan baris ini di awal crontab Anda:

MAILTO=alamatemail.anda

dan ganti alamatemail.anda dengan alamat email Anda. Anda bisa membuat perintah test yang dijalankan setiap menit, misalnya:

* * * * * echo test

maka pada menit berikutnya Anda akan menerima email berisi output perintah cron, dalam kasus ini adalah test.

Jika ingin mengetes perintah, usahakan perintah Anda mengeluarkan suatu output, maka Anda akan mendapati outputnya di email.

 

Saya menerima terlalu banyak email dari cron, bagaimana menguranginya/menghilangkannya?

Hilangkan baris MAILTO=... dari crontab Anda :-)

Atau, usahakan tidak mengeluarkan output apa-apa maka tidak akan ada email yang tergenerate. Untuk membuang output sebuah perintah, Anda bisa menggunakan sintaks ">/dev/null" atau "2>&1 >/dev/null". Contoh:

# ambil kurs dan masukkan ke database tiap 30 menit
*/30 * * * * /s/example.com/www/kurs. p_h_p >/dev/null

Tapi konsekuensinya juga Anda tidak bisa melihat/mendebug perintah Anda. Gunakan jika perlu.

 

Mengapa skrip p_h_p saya tidak berjalan jika dijalankan dari command line?

Contoh:

30 * * * *   p_h_p  /s/example.com/www/kurs.  p_h_p  

Skrip p_h_p ini dijalankan oleh p_h_p command line. Sementara cara ini:

30 * * * * lynx -dump http://example.com/kurs.  p_h_p  

Skrip p_h_p ini dijalankan via webserver menggunakan protokol CGI.

Kadang di dua lingkungan berbeda ini terdapat perbedaan konfigurasi sehingga p_h_p di command line tidak berjalan. Contohnya adalah p_h_p .ini. Di p_h_p CGI otomatis akan dibaca p_h_p .ini per-site yang ada di /s/example.com/etc/. Sementara jika Anda menggunakan p_h_p versi command line maka belum otomatis di-load. Untuk meload-nya gunakan opsi -c:

30 * * * *   p_h_p  -c /s/example.com/etc /s/example.com/www/kurs.  p_h_p  

Mungkin juga ada perbedaan-perbedaan atau asumsi lain dari skrip Anda yang menyebabkan versi command line tidak dapat berjalan (misalnya: ketergantungan pada variabel seperti _SERVER yang hanya tersedia di versi CGI). Untuk mengetahui persisnya, silakan periksa lagi program Anda dan outputnya. Atau gunakan saja versi CGI seperti contoh di atas.

 

Bagaimana cara menjalankan sesuatu secara berkala yang lebih sering dari 1 menit sekali, misalnya 5 detik sekali?

Dengan cron tidak bisa, Anda bisa membuat sebuah proses yang berjalan terus-menerus (mis: sebuah daemon) yang setiap 5 detik menjalankan program yang diinginkan, misalnya (dalam pseudocode):

while (true) 
sleep 5
do something


Mengapa account saya didisable?

Kemungkinan karena crontab Anda mengandung perintah yang dijalankan terlalu sering dan/atau terlalu memberatkan server dan/atau menumpuk (lihat penjelasan item berikutnya), sehingga dinonaktifkan oleh admin server hosting atau oleh program monitoring. Silakan hubungi staf support

 

Bagaimana menghindari proses bertumpuk?

Jika Anda menjalankan sebuah program/perintah, katakanlah setiap 10 menit sekali, lalu perintah terus belum selesai selama 10 menit (katakanlah programnya mendownload kurs mata uang atau headline berita dari Internet, lalu koneksi internetnya timeout atau sangat lambat), maka 10 menit berikutnya akan distart sebuah instans baru dan kini akan ada dua perintah berjalan. 10 menit kemudian dapat bertambah lagi menjadi 3, dst. Sehingga terjadi penumpukan.

Untuk mencegah penumpukan, program/perintah Anda perlu mengecek keberadaan dirinya. Jika instans sebelumnya masih berjalan, segera exit, jangan berjalan lagi. Biasanya hal ini dilakukan dengan PID file. Jika program Anda ditulis dalam Perl, bisa mencoba melihat Proc::PID::File.

 
_.::._
 


GreenTheSky

artikel Menarik Lainya
Internet