Setting Crontab

Posted on

Sebelum lanjut nulis crontab-nya… mau jelasin dulu dech bagi yang belum tau nich. Sebenarnya apa seh itu Cron ? Cron merupakan sebuah daemon yang menjalankan tugas yang telah dijadwalkan berdasarkan input dari perintah crontab. Cron menyelesaikan tugas ini dengan membangunkan dirinya setiap menit dan memeriksa apakah ada cron-job yang harus dijalankannya berdasarkan crontab user. Jadi ya semacam Scheduled Task kalo di Windows lah :p .

Catatan : ingatlah bahwa crontab adalah nama untuk daftar cron-job dan nama dari perintah untuk mengedit daftar tersebut.

Sebenarnya ada 3 implementasi cron yang dikenal dalam GNU/Linux, yaitu :

  1. Vixie cron
    Vixie cron merupakan implementasi penuh fitur berbasis SysV cron. Setiap user memiliki crontab-nya masing-masing dan boleh menentukan variabel lingkungan di dalam crontab tersebut. Tidak seperti varian cron yang lain, cron ini juga
    menawarkan dukungan untuk SeLinux dan PAM. Cron ini mendukung arsitektur lebih sedikit dari Dcron, tetapi lebih banyak dari Fcron.
  2. Dillon’s Cron
    Dcron diciptakan untuk menjadi implementasi cron yang sederhana, elegan, dan aman. Implementasi ini tidak mengizinkan spesifikasi variabel lingkungan di crontab dan semua cron-job dijalankan dari /bin/sh. Seperti Vixie cron, setiap user boleh memiliki crontab-nya sendiri.
  3. Fcron
    Fcron diciptakan untuk menjadi pengganti Vixie cron dan Anacron. Dirancang untuk bekerja pada sistem yang tidak selalu dinyalakan dan memiliki beberapa fitur tambahan. Memiliki penyekat startup job, kendali serialisasi job, kemampuan untuk menetapkan nilai “nice” ke job dan kemampuan untuk menjadwalkan job agar dijalankan ketika sistem startup. Bukalah website fcron untuk info lebih lanjut.
  4. Anacron
    Anacron bukanlah merupakan sebuah daemon cron, tetapi merupakan sesuatu yang biasanya bekerja sama dengan daemon cron. Anacron mengeksekusi perintah pada interval yang ditentukan dengan hitungan hari dan tidak menganggap bahwa sistem selalu menyala; ia akan menjalankan tugas-tugas yang terlewatkan ketika sistem sedang dimatikan. Anacron biasanya bergantung pada daemon cron untuk menjalankannya setiap hari.

Menjadwalkan cron-jobs

Proses pengeditan crontab berbeda untuk setiap paket, tetapi semuanya mendukung kumpulan perintah dasar yang sama: menambahkan dan menggantikan crontab, mengedit crontab, menghapus crontab, dan menampilkan daftar cron-job di cron-tab.

# crontab –help

Perintah diatas berguna untuk menampilkan option-option yang dimiliki oleh perintah crontab. Dalam penggunaannya saya paling sering mengunakan perintah contab -l dan crontab -e untuk melihat dan meng-edit file crontab-nya πŸ˜€

Cron yang digunakan pada distro saya adalah Dcron, gimana tahu-nya ya buka manualnya donk :p

Oke, sekarang coba kita lihat file crontab yang ada dengan perintah

# crontab -l

misalkan salah satu contoh yang saya punya

# update database clamav
15 1 * * * /usr/bin/freshclam -l /var/log/clamav/clam-update.log

Line yang diawali dengan # adalah comment dan tidak dieksekusi oleh cron. Hanya yang tidak di awali dengan tanda # yang dieksekusi. Arti line tersebut adalah β€œjalankan script /usr/bin/freshclam dan menyimpan log-nya file /var/log/clamav/clam-update.log pada setiap hari pada jam 01:15β€³. Tanda * artinya jalankan pada setiap waktu menurut periode masing-masing. sampai sini udah bingung kan ??? =)) Berikut penjelasan masing-masing kolom dalam crontab (5 periode waktu, plus satu kolom perintah).

* * * * * program/script yang ingin dijalankan

Arti :

* * * * * hari dalam 1 minggu (0 – 6) (Minggu = 0)

* * * * bulan (1 – 12)

* * * tanggal dalam 1 bulan (1 – 31)

* * jam (0 – 23)

* menit (0 – 59)

Dalam contoh diatas yang saya punya misalnya

15 1 * * * /usr/bin/freshclam -l /var/log/clamav/clam-update.log

Dapat dilihat bahwa pada jam 1.15 scrip/program /usr/bin/freshclam akan dijalankan setiap harinya (*).

Contoh lain misalkan kita ingin menjalankan script dodol.sh setiap hari Senin jam 6:30 dan meletakkan log nya di file dodol.log, maka isi crontab-nya adalah sbb :

30 6 * * 1 PATH/dodol.sh > PATH/dodol.log

Satu contoh lagi misalkan saya mau buat sebuah script yang akan mengingatkan saya pada jam 5.30 tentang hari ultah saya (tgl 29) dan juga ultah adik saya (tgl 12) pada bulan Juli (7) dan November (11), maka format penulisannya adalah :

30 5 11,29 6,12 * PATH/ultah.sh

Waaa… ternyata gampang yach… :p jadi sekarang silahkan dech atur sesuai kebutuhan, misalkan untuk meng-update antivirus secara periodik, untuk backup file, de el el lah poko`e…

Dan jangan lupa pastikan daemon cron udah pasti berjalan pada sistem

# ps -aux | grep cron

Wokehhh… udah ngatuk nech… lanjut ntar-ntar lagi dech πŸ˜€

13 comments

  1. Penjadwalan cron apa bis dibuat lebih pendek dari 1 menit, kalo ndak bisa pake apa yg bisa lebih cepat dari 1 menit?

  2. apakah bisa kita menjalankan file-file php seperti fungsi cronjob tapi dengan file sendiri yang kita buat..

  3. Salam teman-teman.
    Tolong dijelasin apa maksud pesan ini Pesan ini dari cron jobs.
    Trims.
    Restricted AccessNo log handling enabled – turning on stderr logging
    read_config_store open failure on /var/net-snmp/snmpapp.conf
    read_config_store open failure on /var/net-snmp/snmpapp.conf
    read_config_store open failure on /var/net-snmp/snmpapp.conf

  4. bos, aku baru belajar mengenai linux ne,…
    mau tanya mengenai cron ne, soale masih binun euy, tapi kalo dilihar sebenarnya yang ane maksudkan sangat2 standar sekali, berhubung ane baru belajar, jadi ane masih binun.
    mohon bantuan sejelas2nya y om πŸ™‚
    ane mau schedulin untuk ngapus log yang ada di komputer linux ane,
    tapi caranya belum ketemu kalo cara manualnyakan cuma pake rm doang.
    contoh yang ane jalanin cara manualnya adalah sbb :
    #rm ssl_error_log
    cuma gitu doank.
    kemaren aku coba pengen pake cron tagi gagal maning gagal maning.
    berhubung kurang tau, jadi ane minta penjelasan jadi om ne selaku sesepuh, yang pertama yang harus ane lakukan ntu apa dulu ya dan selanjutnya ap.. πŸ™‚
    kalo kemaren se aku cobanya langsung ketik #crontab -e aj langsung terus didalemnya aku tulis *1**1 /var/log/httpd/rm ssl_error_log
    tapi pas aku simpen tidak bisa.
    apakah harus ada yang di intall terlebih dahulu om?

    mohon petunjuk… πŸ™‚

  5. sya kan pake aplikasi iperf yang dijalankan dan diaktifkan untuk monitoring jaringan. aplikasi ini aktif jd dijlnkan baru aktif bekerja danhasil yg didapat berselang dalam bebeberapa saat.
    aplikasi ini saya jalankan dengan cron per10 menit. selama sepuluh menit ini utk mendapatkan hasilnya. dan hasil tersebut saya masukkan dalam file txt
    contoh cron:
    /usr/local/bin/iperf -fm -b20m -u -p21 -c172.20.2.15 >> /home/donz/Desktop/tes.txt
    tetapi pada beberapa bagian hasil tersebut ga muncul.
    contoh:
    yg bener
    Mon Sep 15 11:55:01 WIT 2008
    ————————————————————
    Client connecting to 172.20.2.15, UDP port 21
    Sending 1470 byte datagrams
    UDP buffer size: 0.11 MByte (default)
    ————————————————————
    [ 3] local 172.24.14.34 port 45141 connected with 172.20.2.15 port 21
    [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
    [ 3] Sent 893 datagrams
    [ 3] Server Report:
    [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.481 ms 0/ 893 (0%)

    yang salah
    Mon Sep 15 11:40:01 WIT 2008
    ————————————————————
    Client connecting to 172.20.2.15, UDP port 21
    Sending 1470 byte datagrams
    UDP buffer size: 0.11 MByte (default)
    ————————————————————
    [ 3] local 172.24.14.34 port 47706 connected with 172.20.2.15 port 21
    [ 3] 0.0-10.3 sec 0.93 MBytes 0.76 Mbits/sec
    [ 3] Sent 662 datagrams
    cuman sampe sini saja, yg salah dimana ya? terima kasih

  6. mas kalo buat cron 1 file web itu gmana ya mas?
    soalnya kalo di cron dl g bisa, kluar error nya.
    minta petunjuknya ya mas

    thanks

  7. cron hanya bisa dilakukan pada server hosting LINUX.

    Yang oknya bisa kita pergunakan sbg triger untuk routine script misalnya PHP script.

    Pokoknya mantap..!

  8. Apakah cron ini bisa digunakan di windows juga? kalo ya saya minta tolong dijelaskan bagaimana cara kerjanya.

  9. saya pakai vps linux dan ingin menjalankan file php dan file php saya ada didrectory var/www/html/coba.php

    cara comandnya gmn boz

Leave a Reply

Your email address will not be published.