Tutorial Penggunaan Crontab Scheduler di Ubuntu

Apa itu cron / crontab ? Crontab adalah aplikasi daemon (berjalan dibalik layar) yang digunakan untuk menjalankan tugas yang dijadwalkan pada suatu waktu di sistem operasi linux. Setiap user di sistem yang memiliki file crontab, mengijinkan file tersebut untuk melakukan suatu aksi yang telah dispesifikasikan sesuai waktu yang telah ditentukan. Crontab biasa digunakan untuk membuat backup secara otomatis, sinkronisasi files, dll.

1. Install crontab

Buat yang belum diinstall crontab-nya, cara install nya adalah :

sudo apt-get install cron

2. Melihat aktifitas crontab
Untuk melihat schedule yang sedang berjalan di sistem Anda :

sudo crontab -l

3. Mengedit cron jobs

sudo crontab -e

editor default dari cron adalah vi atau pico
4. Format penulisan cron
Format penulisan crontab ditulis dengan format seperti ini :

* * * * * /home/sigit/script.sh

Penjelasan :
5 bintang (*) diatas merepresentasikan bagian2 format tanggal yang berbeda, urutannya sebagai berikut :
1. (* pertama) : menit (isian : 0 – 59)
2. (* kedua) : jam (isian : 0 – 23)
3. (* ketiga) : hari dari bulan / tanggal (isian : 1 – 31)
4. (* keempat) : bulan (isian : 1 – 12)
5. (* kelima) : hari dari minggu (isian : 0 – 6) –> 0 = minggu
Contoh :
> Eksekusi setiap menit :

* * * * * php /opt/lampp/htdocs/jobs/test.php

jadwal tersebut akan mengeksekusi perintah php pada setiap menit dari setiap jam, setiap hari, setiap minggu, setiap bulan ::bingung::, pokoknya setiap menit dah.
> Eksekusi setiap Sabtu jam 12 siang :

0 12 * * 6 /home/sigit/script.sh

(* pertama) artinya pada menit ke 0, (* kedua) artinya pada jam ke 12, (* ketiga) artinya pada tanggal berapapun, (* keempat) artinya pada setiap bulan, (* kelima) artinya pada setiap hari sabtu (6 = sabtu). (semoga ngga bingung)
> Eksekusi pada jam 9 malam setiap hari kerja (Senin – Jumat) :

0 21 * * 1-5 /home/sigit/script.sh

Arinya sama mirip-mirip ama diatas, cuma (* kelima) diisi rentang, yaitu 1-5 (artinya senin-jumat)
> Eksekusi setiap menit ke 30 (setiap jam) pada setiap tanggal 1 (setiap bulan)

30 * 1 * * /home/sigit/script.sh

5. Tips and Trick
> Misalnya kita mau jalanin suatu perintah setiap 10 menit (tiap hari), penulisannya bisa seperti ini :

0,10,20,30,40,50 * * * * /home/sigit/script.sh

Tapi ada trik penulisan yang lebih gampang, caranya seperti ini :

*/10 * * * * /home/sigit/script.sh

arti dari (*/10) adalah (ngerti lah). πŸ˜€
> kode-kode special
crontab menyediakan kode-kode special untuk digunakan, berikut kodenya :

@reboot     Run once, at startup
@yearly     Run once  a year     "0 0 1 1 *"
@annually   (same as  @yearly)
@monthly    Run once  a month    "0 0 1 * *"
@weekly     Run once  a week     "0 0 * * 0"
@daily      Run once  a day      "0 0 * * *"
@midnight   (same as  @daily)
@hourly     Run once  an hour    "0 * * * *

Cara pemakaian :

@daily /home/sigit/script.sh

6. Menyimpan log crontab
Supaya kita bisa memonitor pekerjaan crontab kita, hasil log bisa disimpan dalam file, caranya seperti berikut :

@daily /home/sigit/script.sh 2>&1 >> /home/sigit/log/crontab_schedule.log

atau bisa dikirim ke email (harus install mailx dulu), caranya :

@daily /home/sigit/script.sh 2>&1 | mail -s "Cronjob Log sgt.wibowo@gmail.com

Itu dulu yang bisa saya tulis, kalo ada pertanyaa, sanggahan, atau penambahan silahkan hubungi saya

Advertisements
    • Dedi
    • May 14th, 2010

    Wah tutorial nya lengkap niy lumayan buat refresnsi
    thank ya

  1. Mas, kalo saya mau bikin supaya sevice imapd nya di restart tiap 20 menit sekali gmn ya mas? tolong kasih contoh mas

    Terima kasih

  2. makasih banyak mas tutorialannya, sangat membantu.saya pemula nih pake linux, njajal pake ubuntu karmic koala juga πŸ™‚

    ngomong2 saya khan mau bikin logfile. saya sudah buat scriptnya pake php. di script itu sudah saya atur sedemikian rupa, apa saja yang harus saya catat nanti.

    jadi kalau ingin script itu jalan setiap 1 jam sekali katakan, saya hanya perlu ngetik di terminal seperti inikah :

    ” @hourly /var/www/log.php ”
    atau
    ” 0 * * * * php /var/www/log.php ”

    atau saya harus buat file crontab baru dan edit disana?

    mohon penjelasannya,
    hatur nuhun ya..
    salam kenal . πŸ™‚

    • Terima kasih mas sudah berkunjung.

      mungkin begini mas, perintah :
      @hourly php /var/www/log.php
      nya diketikkan di crontab editor, cara membuka crontab editornya :
      sudo crontab -e

      Semoga membantu.

  3. oke mas, saya coba dulu. makasih banyak πŸ™‚

  4. mas waktu saya coba
    ” sudo crontab -e ”
    ketik
    ” @hourly php /var/www/logs.php ”
    kok error yah??
    setelah disimpen & keluar editor, ada kalimat
    /tmp/crontab.WIhOZ5/crontab”:0: bad hour
    error in crontab file, cant install.
    kenapa ya?
    apa karena ada job lainnya, disitu soalnya juga ada jobnya mrtg ku.

    format penulisan saya ganti jadi
    ” */10**** php /var/www/logs.php ”
    juga sama, gak bisa.

    tapi pas saya ketik
    ” crontab -e ”
    lalu saya tulis
    ” @hourly php /var/www/logs.php ”
    bisa,dah ditunggu tapi script mau gak jalan.

    kenapa ya mas?

    • sudah yakin kalau crontabnya jalan ? biasanya ada kesalahan pada proses instalasi, cek lagi aja jalanin crontab untuk perintah-perintah sederhana. atau mungkin kesalahan lainnya PHP nya belum diinstall (maksudnya script untuk menjalankan php via shell).

  5. makasih atas tutorialnya. tapi saya ada masalah, biar crontab ga ngirim email gimana ya mas?

    • Tinggal dihapus aja mas perintah setelah pipelinenya. misalnya gini :
      @daily /home/sigit/script.sh 2>&1 | mail -s “Cronjob Log sgt.wibowo@gmail.com

      diubah menjadi :

      @daily /home/sigit/script.sh

  6. mas Sigit Yth,

    maaf mo nanya,
    apakah WWW tsb artinya website ybs?(umpamanya http://www.indonesiawaterinstitute.org atau biarkan saya spt itu?

    maklum ga ngerti php sama sekali

    • www itu lokasi Web Servernya mas, kalo pake PHP di Linux biasanya diinstall di direktori /var/www/

    • yogi
    • November 4th, 2010

    halo mas sigit, terimakasih mas berbagi ilmunya.

    saya bingung nih dengan gambar command diatas, dan mau bertanya.

    dibintang ke 2 bisa tidak mendefinisikan jam seperti ini 20-2, maksudnya saya ingin menjalankan proses dari jam 8 malam sampai jam 2 pagi saja?

    contoh, * 20-2 * * * /file.

    • Agus
    • November 28th, 2010

    mas mohon pencerahan nih mas, begini Mas Sigit, saya punya mesin squid di ubuntu 10.10, saya pingin mesin squid sy itu shutdown apabila komputer dg ip 192.168.10.12 mati, maka squid sy juga otomatis shutdown, mohon contoh bagaimana membuat script dan susunan crontab seperti itu mas… terima ksih sebelumnya

    Salam
    Newbi Linux

  7. Bagus nih, untuk referensi. Salam kenal, Mas! Kapan-kapan main ke blog saya, yah? πŸ˜€

    • adri
    • December 28th, 2010

    wahhhh… keren tutorialnya mas,,, sangat membantu saya
    mw nanya mas… klu saya mw mengintegrasikan dengan sms gateway gmn ya??
    FYI : saya lg buat TA sistem pendeteksi penyusup jaringan menggunakan snort yang pelaporan nya menggunakan sms
    nah rencana saya menggunakan crontab ini untuk mengirimkan sms log ids nya,
    mohon bantuannya dan info nya mas,,,
    terimakasih πŸ™‚

      • pragressa
      • January 8th, 2011

      @Adri : Hubungan Cron sama penyusup jaringan apa mas bukannya Cron itu terjadwal sedangkan penyusup itu tidak…

  8. mas izin save di doc tutnya. bt dibaca2 nanti:)

    • pragressa
    • January 8th, 2011

    Ehm… sekali googling -> sekali mencet link -> dan langsung dapet ini… Good Luck buddy!!! Teruskan dengan tutorial-tutorialnya…

    • chandra
    • February 4th, 2011

    salam kenal mas..saya baru di linux..ni mau belajar ubuntu
    mohon pencerahannya mas..untuk shutdown pc ubuntunya dan hidupin lagi secara otomatis pada jam tertentu bisa mas dengan perintah crontab?

    • chandra
    • February 4th, 2011

    mas nanya lagi ni mas.boleh mas ya…kalau pc ubuntunya sering shutdown terus diidupin lagi pada jam tertentu setiap hari (contoh pc shutdown setiap jam 12 malam trus aktif lagi jam 8 pagi) efek sampingnya bagi ubuntunya apa mas ya?
    …(mohon maaf mas tatabahasa saya hancur-hancuran)
    Terimakasih..

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: