ARTICLE

Otomatisasi Task dengan Cronjob

17 March 2023 by Tiyan Wisesa

Dengan begitu banyaknya tugas rutin pada sistem yang harus dikerjakan setiap hari, sulit untuk mengingat semua hal yang harus dilakukan tepat waktu.

Beberapa skenario dalam menjalankan tugas-tugas rutin pada sistem meliputi:

  1. Melakukan backup pada website atau web application, database, atau log secara berkala.
  2. Update software, system packages, atau melakukan system maintenance secara berkala.
  3. Mengirimkan laporan atau notifikasi secara berkala, dan masih banyak contoh lainnya.

Salah satu alat yang dapat digunakan untuk itu adalah Cron, yang memungkinkan pengguna untuk menjadwalkan dan menjalankan tugas secara otomatis berdasarkan waktu atau interval tertentu.

Pada bahasan di bawah, kamu akan mengetahui lebih lanjut tentang pengertian, fungsi, dan cara penggunaan Cron, serta beberapa shortcut dari cron-expression yang disebut “Special Syntax” yang dapat mempercepat proses penulisan jadwal tugas dan membuatnya lebih mudah dipahami.

Apa itu Cron, Crontab, dan Cronjob

Cron merupakan sebuah tool yang populer dan efektif dalam menjadwalkan tugas atau skrip secara otomatis pada sistem operasi Unix-Like seperti Linux dan MacOS. Nama “Cron” berasal dari bahasa Yunani “Chron” yang berarti “waktu”. Alat ini bekerja dengan menggunakan command-line dan dapat menjalankan tugas atau skrip secara terjadwal pada interval waktu tertentu seperti jam, hari, minggu, bulan, dan sebagainya.

Cron diaktifkan melalui file Crontab (Cron Table). di mana merupakan file teks sederhana dan mudah dibaca yang berisi kumpulan perintah shell yang akan dijalankan secara terjadwal sesuai jadwal yang telah ditentukan. Kumpulan perintah shell tersebut dikenal sebagai Cronjob, dan masing-masing user profile pada sistem dapat memiliki Crontab mereka sendiri, untuk menjadwalkan tugas-tugas tertentu.

Keuntungan dari otomatisasi tugas menggunakan Cron

Dengan mengautomatisasi tugas menggunakan Cron, beberapa keuntungan yang bisa diperoleh di antaranya:

  • Meningkatkan produktivitas
    Cron memungkinkan pengguna untuk mengotomatisasi tugas-tugas yang berulang, sehingga waktu dan tenaga dapat digunakan secara efisien untuk tugas-tugas penting lainnya.
  • Meningkatkan akurasi
    Dengan otomatisasi tugas menggunakan Cron, pengguna dapat meminimalkan kesalahan manusia dan memastikan bahwa tugas-tugas dijalankan secara konsisten dan dapat diandalkan.
  • Fleksibilitas
    Cron memiliki fleksibilitas yang tinggi, memungkinkan pengguna untuk menentukan jadwal tugas pada waktu tertentu, hari tertentu, serta dengan beragam parameter lainnya.
  • Hemat biaya
    Cron menghilangkan kebutuhan untuk campur tangan manual dalam banyak tugas rutin, mengurangi biaya tenaga kerja dan meningkatkan efisiensi.

Pengaturan Awal

Sebelum mengatur pada Crontab, pastikan bahwa shell script atau command yang akan dieksekusi berjalan dengan normal.

↳ Untuk memastikan, coba jalankan command tersebut secara biasa. (langsung pada terminal).


    # crontab -e
     

↳ Jika sudah dipastikan aman, sekarang akses file Crontab dengan menjalankan perintah crontab -e

↳ Apabila Anda baru saja membuka file crontab pada user profile ini, maka akan ditampilkan opsi text editor yang kita bisa pilih, kita akan gunakan nano editor karena relatif lebih mudah untuk digunakan.

↳ Setelahnya, Anda akan dibawa ke file Crontab baru yang berisi beberapa instruksi tentang bagaimana dalam menggunakannya.

Format Perintah Crontab

Setiap baris dalam Crontab mewakili sebuah Cronjob yang terdiri dari dua komponen, yaitu waktu/jadwal dan shell script atau perintah yang akan dieksekusi pada jadwal tersebut. Struktur ini dapat kita lihat pada poin di bawah.

Special Character dan Special Syntax pada Crontab

Selain itu, ada beberapa Special Character dan Special Syntax dalam cron-expression yang bisa kita pakai untuk merubah jadwal secara lebih spesifik. Special Syntax sendiri sebenarnya adalah shortcut dari rentetan waktu numerik yang sudah ada di Crontab.

Atau untuk lebih mudahnya kita cek tabel di bawah:

Special CharacterKegunaan
*Wildcard variabel yang merepresentasikan ekspresi “all”. Jadi akan menjalankan semua allowed values yang ada pada satuan waktu tersebut. Jika day of the month, maka menjalankan semua values (1 - 31), month (1 - 12) dan sebagainya.
,Mengubah nilai menjadi sebuah daftar. Dengan cara ini, kita bisa menjalankan tugas hanya pada jam-jam tertentu yang kita masukkan pada daftar tersebut saja.
Merepresentasikan range of value. Jadi apabila kita ingin menjalankan task pada range tertentu yang sudah ditentukan, kita bisa gunakan tanda hubung ini
/Merepresentasikan incremental. Misalnya jika kita ingin menjadwalkan task untuk dijalankan setiap 30 menit, kita bisa menggunakan format: */30 * * * * command.
Special SyntaxKegunaan
@hourlyShortcut cron yang digunakan untuk menjalankan job setiap jam pada menit ke-0 (misalnya, 1:00, 2:00, 3:00).
(0 * * * *)
@dailyShortcut cron yang akan menjalankan job setiap hari pada pukul 00:00
(0 0 * * *)
@weeklyShortcut cron yang akan menjalankan job setiap minggu pada hari Minggu pada pukul 00:00
(0 0 * * 0
)
@monthlyShortcut cron yang akan menjalankan job setiap bulan pada tanggal 1 pada pukul 00:00.
(0 0 1 * *)
@yearlyShortcut cron yang menjalankan job setiap tahun pada tanggal 1 Januari pada pukul 00:00.
(0 0 1 1 *)

Jika Anda ingin menentukan apakah Cronjob Anda valid, Cronitor menawarkan editor cron-expression yang praktis bernama “Crontab Guru” yang dapat Anda gunakan untuk mempelajari dan memvisualisasikan cron-expression lebih cepat sesuai kebutuhan Anda, terutama jika Anda baru menggunakan cron-job atau perlu membuat jadwal yang kompleks.

Anda dapat mengunjungi situs web Crontab Guru di https://crontab.guru/ dan memasukkan cron-expression Anda di kotak input. Crontab Guru akan menampilkan deskripsi dalam bahasa Inggris yang sederhana, serta representasi grafis dari jadwal kerja cron Anda.

Contoh Implementasi Cronjob

Jadi yg pertama, kita akan menjadwalkan sebuah perintah rsync untuk membuat backup aset website dari folder utama ke folder backup setiap hari pada pukul 1:30 malam. Untuk itu, kita bisa menggunakan cron-expression berikut:


    30 1 * * * rsync -a /var/www/cloudforindonesia/galerifashion/ /etc/backup-website/cloudforindonesia/galerifashion/
     

Waktu 01:30 dapat direpresentasikan dengan angka 30 dan 1.

Sementara itu, tiga tanda bintang setelahnya yang mewakili “semua” akan mengeksekusi setiap nilai yang diizinkan dalam periode waktu tersebut. Atau dalam bahasa singkatnya akan mengeksekusi setiap hari.


Alternatif lainnya, kita juga dapat menjalankan serangkaian perintah yang telah kita tulis di dalam file .sh.

Jadi saya memiliki file backup-website.sh, di dalamnya berisi beberapa perintah simpel seperti backup website, backup database MariaDB, restart layanan NGINX dan layanan MariaDB. Dan saya juga ingin jadwalkan tugas ini setiap hari jam 1:30 pagi.

Kemudian untuk jadwalkan tugasnya, kita bisa menggunakan cron-expression berikut ini:


    30 1 * * * sh /etc/backup-website/backup-website.sh
     

Gampang kan? jadi kalau kita ingin jalankan tugas dan ingin dijadwalkan, hanya perlu setup cronjob dan set jadwal waktunya.

Informasi Tambahan

  • Jika server mati atau not available pada saat penjadwalan cron yang telah ditentukan, maka tugas akan menunggu sampai jadwal berikutnya untuk dijalankan.
  • Jika ingin lihat daftar cronjob yang sedang aktif, tinggal ketik saja di terminal “crontab -l“.
  • Untuk hapus crontab, dapat menggunakan “crontab -r” (tanpa konfirmasi) atau “crontab -ri” (dengan konfirmasi).

Kesimpulan

Overall, Cron merupakan tool yang sangat berguna untuk handle tugas-tugas yang berulang di Unix-based system. Dengan otomatisasi tugas-tugas ini, Anda jadi bisa lebih hemat waktu, mengurangi kesalahan, dan lebih produktif. Akhirnya, bisa mendapatkan hasil yang lebih baik dan hemat biaya juga.

Menjalankan skrip di system Anda memang keren, tetapi menjalankannya secara otomatis jauh lebih keren!

Kunjungi knowledge base Cloud Raya untuk mendapatkan lebih banyak tutorial artikel lainnya. Atau, Anda juga bisa mengunjungi channel Youtube kami untuk video stream tutorial yang Anda butuhkan.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Ready to Make Something Big?

Deploy in Cloud Raya
Background wave