Langsung ke konten utama
Cron adalah service yang berjalan pada sistm operasi Unix atau Linux. service ini digunakan untuk menjalankan perintah dalam waktu tertentu Membuat Crontab Baru Crontab dapat dibuat dengan mudah menggunakan perintah crontab . Untuk membuat atau mengubah isi crontab user@machine:~$ crontab -e Perintah Dasar Crontab crontab -e Mengubah atau membuat file crontab jika belum ada. crontab -l Menampilkan isi file crontab. crontab -r Menghapus file crontab. crontab -v Menampilkan waktu terakhir mengubah isi file crontab. (Hanya tersedia dibeberapa sistem). Crontab Parameters # m h dom mon dow command Baris yang dikomentari di atas menampilkan parameter tentang bagaimana crontab mendefinisikan setiap cronjob. Daftar Parameter Crontab m - Minute (menit) - 0 to 59 h - Hour (jam) - 0 to 23 dom - Day of Month (tanggal) - 0 to 31 mon - Month (bulan) - 0 to 12 dow - Day of Week (nomor hari) - 0 to 7 (0 dan 7 adalah hari minggu) Berikut ini grafik untuk mempermudah: * * * *

Cron adalah service yang berjalan pada sistm operasi Unix atau Linux. service ini digunakan untuk menjalankan perintah dalam waktu tertentu

Membuat Crontab Baru

Crontab dapat dibuat dengan mudah menggunakan perintah crontab.

Untuk membuat atau mengubah isi crontab

user@machine:~$ crontab -e

Perintah Dasar Crontab

  • crontab -e Mengubah atau membuat file crontab jika belum ada.
  • crontab -l Menampilkan isi file crontab.
  • crontab -r Menghapus file crontab.
  • crontab -v Menampilkan waktu terakhir mengubah isi file crontab. (Hanya tersedia dibeberapa sistem).

Crontab Parameters

# m h dom mon dow command

Baris yang dikomentari di atas menampilkan parameter tentang bagaimana crontab mendefinisikan setiap cronjob.

Daftar Parameter Crontab

  • m - Minute (menit) - 0 to 59
  • h - Hour (jam) - 0 to 23
  • dom - Day of Month (tanggal) - 0 to 31
  • mon - Month (bulan) - 0 to 12
  • dow - Day of Week (nomor hari) - 0 to 7 (0 dan 7 adalah hari minggu)

Berikut ini grafik untuk mempermudah:

* * * * * perintah yang akan dieksekusi
– – – – –
| | | | |
| | | | +—– day of week (0 – 7) (Sunday=0)
| | | +——- month (1 – 12)
| | +——— day of month (1 – 31)
| +———– hour (0 – 23)
+————- min (0 – 59)

Parameter-parameter di atas memungkinkan kita untuk membuat suatu jobs yang berjalan pada waktu-waktu tertentu. Setiap parameter yang dipilih dapat mengatur details waktu eksekusi sampai ke menit. Ada karakter khusus yang dapat membuat crontab lebih fleksibel.

Karakter Khusus

Kita dapat menggunakan karakter khusus disebuah cron untuk memperbolehkan pengguna menentukan interval waktu bagi sebuah job untuk dieksekusi. Karakter khusus ini dipakai di crontab untuk mendeklarasi cronjob.

Karakter khusus: Asterisk (bintang)

Karakter Asterisk (bintang) merupakan karakter wild card yang dipakai untuk membuat sebuah job dijalankan setiap menit, setiap jam, setiap, hari, setiap bulan (tergantung posisi dimana ia ditulis, lihat grafik di atas).

Contoh:

* * * * * /home/user/script.sh

Karakter khusus: Koma

Karakter koma saat kita ingin mengeksekusi sebuah job di dua waktu atau lebih. Contoh di bawah ini misalnya, kita ingin mengeksekusi /home/user/script.sh setiap menit ke 0, 15, dan 25.

0,15,25 * * * * /home/user/script.sh

Karakter khusus: Hyphen (-)

Karakter - dipakai untuk memberikan jarak waktu antar eksekusi job.

0-59 0-23 * * * /home/user/script.sh

Karakter khusus: Forward Slash (/)

Karakter / dipakai jika kita ingin memberikan interval antar eksekusi job. Pada contoh di bawah ini kita ingin agar script.sh dieksekusi pada menit ke 0 lalu 20 kemudian 40 dan 60.

*/20 * * * * /home/user/script.sh

Contoh Crontab

Sebagian besar crontab dapat memiliki metode sendiri dalam pembuatannya dengan menggunakan wild card atau mendefinisikan sebuah jarak.

Setiap menit setiap hari

 # m h dom mon dow command
  * * * * * /home/user/script.sh

Atau

 # m h dom mon dow command
 0-59 0-23 0-31 0-12 0-7 /home/user/script.sh

Setiap 10 menit setiap hari

 # m h dom mon dow command
  */10 * * * * /home/user/script.sh

Atau

 # m h dom mon dow command
  0-59/10 * * * * /home/user/script.sh

Atau

 # m h dom mon dow command
  0,10,20,30,40,50 * * * * /home/user/script.sh

Setiap 5 menit pada pukul 6 pagi dimulai pada 6:07

 # m h dom mon dow command
 07-59/5 06 * * * /home/user/script.sh
 # Perintah ini  akan berjalan pada 6:07, 6:012, 6:17, 6:22, 6:27, seterusnya sampai 6:57

Setiap hari tengah malam

 # m h dom mon dow command
 0 0 * * * /home/user/script.sh

Atau

 # m h dom mon dow command
 0 0 * * 0-7 /home/user/script.sh

Tiga kali sehari

 # m h dom mon dow command
  0 */8 * * * /home/user/script.sh

Atau

 # m h dom mon dow command
  0 0-23/8 * * * /home/user/script.sh

Atau

 # m h dom mon dow command
  0 0,8,16 * * * /home/user/script.sh

**Setiap weekday (Senin - Jumat) jam 6 pagi **

 # m h dom mon dow command
  0 06 * * 1-5 /home/user/script.sh

**Setiap weekend (Sabtu - Minggu) jam 6 pagi **

 # m h dom mon dow command
  0 06 * * 6,7 /home/user/script.sh

Atau

 # m h dom mon dow command
  0 06 * * 6-7 /home/user/script.sh

Sebulan sekali setiap tanggal 20 jam 6 pagi

 # m h dom mon dow command
  0 06 20 * * /home/user/script.sh

Setiap 4 hari sekali jam 6 pagi

 # m h dom mon dow command
  0 06 */4 * * /home/user/script.sh

Setiap 4 bulan sekali tanggal 10 jam 6 pagi

 # m h dom mon dow command
  0 06 10 */4 * /home/user/script.sh

Penggunaan String Khusus

Kita juga dapat menggunakan string khusus sebagai pengganti kelima parameter di atas untuk memudahkan pembacaan.

  • @reboot - Dijalankan sekali setiap kali sistem dihidupkan
  • @yearly - Dijalankan sekali setahun 0 0 1 1 *
  • @annually - Sama seperti @yearly
  • @monthly - Dijalankan sekali sebulan 0 0 1 * *
  • @weekly - Dijalankan sekali seminggu 0 0 * * 0
  • @daily - Dijalankan setiap hari 0 0 * * *
  • @midnight - Sama seperti @daily
  • @hourly - Dijalankan setiap jam 0 * * * *

Contoh Penggunaan String

Setiap jam

@hourly /home/user/script.sh

Setiap bulan

@monthly /home/user/script.sh

Membuat Log File

Untuk menyimpan output cron di sebuah file, gunakan tanda >:

10 * * * * /usr/bin/php /www/virtual/username/script.py > /var/log/cron.log

Perintah di atas akan menimpa output sebelumnya. Jika ingin menambahkan output dibaris terakhir tanpa menimpa output sebelumnya gunakan tanda >>:

10 * * * * /usr/bin/php /www/virtual/username/script.py >> /var/log/cron.log

Blok Output yang Terlalu Ramai

Terkadang kita memiliki script yang memiliki output sangat panjang setiap dieksekusi dan dapat memenuhi log. Kita dapat menyembunyikan pesan-pesan tersebut dengan mengirimkan output-nya ke “/dev/null”.

# MAILTO=""
MAILTO=email@example.com
30 11 * * * /your/directory/whatever.py >/dev/null 2>&1

Apa maksud 2>&1 ?

Disini,
Descriptor 1 artinya standard output (stdout) dan descriptor 2 artinya standard error (stderr).

echo test > afile.txt

… akan me-redirect stdout ke sebuah file bernama afile.txt. Sama dengan:

echo test 1> afile.txt

Untuk me-redirect stderr kita akan menulis:

echo test 2> afile.txt

& adalah sintaks yang dipakai untuk me-redirect suatu aliran data ke descriptor lain - 0 untuk stdin. 1 untuk stdout. 2 untuk stderr.

Kita dapat me-redirect stdout ke stderr dengan melakukan:

echo test 1>&2 # or echo test >&2

Atau sebaliknya:

echo test 2>&1

Jadi singkatnya, 2> artinya kita ingin mengalirkan suatu stream stderr ke stdout (&1).

Executable Script

10 * * * * /usr/bin/php /www/virtual/username/hello.php

Saat sebuah script perlu dijalankan menggunakan aplikasi khusus, kita dapat menentukan perintah yang mengeksekusinya di depan script. Cara lainnya ialah menggunakan shebang yaitu dengan menambah #!/usr/local/bin/php di bagian paling atas suatu file:

#!/usr/local/bin/php
<?php

echo "hello world\n";

// ...

?>

Lalu pastikan script di atas memiliki ijin untuk dieksekusi (chmodnya 755).

chmod 755 hello.php
./hello.php

Crontab sebelumnya dapat lebih singkat:

10 * * * * /www/virtual/username/hello.php

Apa maksud tanda #!?

Setiap tanda shebang (#!) di script manampun memberikan kemampuaan script tersebut untuk dieksekusi layaknya aplikasi standalone tanpa perlu menuliskan python atau php di depannya seperti saat kita menuliskan di terminal. Contohnya adalah:

#!/usr/bin/env python

#!/usr/bin/env python biasanya mengarah ke Python 2.7.x, jika ingin menggunakan Python 3.x, atau yang terbaru, gunakan:

#!/usr/bin/env python3

Menjalankan beberapa script bersamaan

Kita dapat menggunakan tanda “&” untuk menjalankannya secara pararel (sekaligus) atau tanda “&&” untuk menjalankannya satu persatu.

# script.sh & script2.sh & script.sh

Diterjemahkan dari The Ultimate Crontab Cheatsheet oleh Akul Megra

Komentar

Postingan populer dari blog ini

Memperbaiki masalah cURL koneksi pada protokol HTTPS

Masalah yang dihadapi pada saat kita deploy program adalah menyesuaikan pengaturan server yang kita miliki. tidak terkecuali dengan settingan cURL pada server yang memiliki SSL. Dan cara mudah memperbaiki permasalahan tersebut dengan mendownload file cacert.pem untuk diletakan pada direktori PHP.   wget https://curl.haxx.se/ca/cacert.pem setelah di dowload. letakan file tersebu t di rektori PHP anda mv cacert.pem /etc/php/7.2/cacert.pem sekarang edit php.ini anda cari keyword berikut  curl.cainfo="/etc/php/7.2/cacert.pem" //->hilangkantanda ; dan  sesuaikan filenya openssl.cafile="/etc/php/7.2//cacert.pem" simpan dan restart web server anda  sudo systemctl restart apache2.service