Cron adalah daemon penjadwalan yang menjalankan tugas dengan interval yang ditentukan. Tugas-tugas ini disebut cron jobs dan sebagian besar digunakan untuk mengotomatisasi pemeliharaan atau administrasi sistem.
Misalnya, Anda dapat mengatur cron job untuk membuat backup database atau data dan file Anda, update sistem dengan tambalan keamanan terbaru, memeriksa penggunaan ruang disk, mengirim email dan banyak lagi. Beberapa aplikasi, seperti Drupal atau Magento membutuhkan cron jobs untuk melakukan fungsi tertentu.
Anda dapat menjadwalkan cron jobs untuk dijalankan berdasarkan menit, jam, hari dalam bulan, tahun, hari dalam seminggu atau kombinasi dari semuanya.
Di harapkan Anda membuka Linux Terminal dan mempraktekkan apa yang ada di panduan ini agar anda lebih memahami. Namun kami sarankan untuk menggunakan virtual machine (vmware atau virtualbox) agar tidak mengacaukan sistem yang berjalan.
Apa itu File Crontab
Crontab (cron table) adalah file teks yang menentukan jadwal cron jobs. Ada dua jenis file crontab. File crontab seluruh sistem dan file crontab pengguna individu.
File crontab pengguna disimpan dengan nama pengguna dan lokasinya bervariasi menurut sistem operasi. Dalam sistem berbasis Red Hat seperti CentOS, file crontab disimpan di direktori /var/spool/cron
sementara pada file Debian dan Ubuntu disimpan di direktori var/spool/cron/crontabs
Meskipun Anda dapat mengedit file crontab pengguna secara manual, disarankan untuk mengedit crontab menggunakan perintah crontab
melalui baris perintah.
/etc/crontab
dan file di dalam direktori /etc/cron.d
adalah file crontab di seluruh sistem yang hanya dapat diedit oleh administrator sistem.
Di sebagian besar distribusi Linux, Anda juga dapat meletakkan skrip di dalam direktori /etc/cron.{hourly,daily,weekly,monthly}
dan skrip akan dieksekusi setiap jam/harian/mingguan/bulanan.
Sintaks dan Operator Crontab
Setiap baris dalam file crontab pengguna berisi enam bidang yang dipisahkan oleh spasi diikuti oleh perintah yang akan dijalankan.
* * * * * command(s) - - - - - | | | | | | | | | ----- Hari dalam satu minggu (0 - 7) (Minggu=0 atau 7) | | | ------- Bulan (1 - 12) | | --------- Tanggal (1 - 31) | ----------- Jam (0 - 23) ------------- Menit (0 - 59)
Lima bidang pertama dapat berisi satu atau lebih nilai, dipisahkan oleh koma atau rentang nilai yang dipisahkan oleh tanda hubung.
*
– Operator tanda bintang berarti nilai apa pun atau selalu. Jika Anda memiliki simbol tanda bintang di bidang Jam, itu berarti tugas akan dilakukan setiap jam.,
– Operator koma memungkinkan Anda menentukan daftar nilai untuk pengulangan. Misalnya, jika Anda memiliki1,3,5
di bidang Jam, tugas akan berjalan pada jam 1 pagi, 3 pagi dan 5 pagi (format jam 24 jam).-
Operator tanda hubung memungkinkan Anda untuk menentukan rentang nilai. Jika Anda memiliki 1-5 di bidang Day of week, tugas akan berjalan setiap hari kerja (Dari Senin hingga Jumat)./
-Operasi garis miring memungkinkan Anda untuk menentukan nilai yang akan diulang selama interval tertentu di antara mereka. Misalnya, jika Anda memiliki * / 4 di bidang Jam, maka tindakan akan dilakukan setiap empat jam. Ini sama dengan menentukan0,4,8,12,16,20
. Alih-alih tanda bintang sebelum operator garis miring, Anda juga dapat menggunakan rentang nilai,1-30/10
artinya sama dengan1,11,21
.
File Crontab di seluruh sistem
Sintaksis file crontab seluruh sistem sedikit berbeda dari crontab pengguna. Crontab berisi bidang wajib tambahan yang digunakan untuk menentukan pengguna mana yang menjalankan cron job.
* * * * * <username> command(s)
Interval waktu crontab
Ada beberapa makro jadwal Cron khusus yang digunakan untuk menentukan interval umum. Anda dapat menggunakan pintasan ini sebagai pengganti spesifikasi tanggal lima kolom.
@yearly
(atau@annually
) – Jalankan tugas yang ditentukan setahun sekali pada tengah malam (12:00 pagi) tanggal 1 Januari. Setara dengan0 0 1 1 *
@monthly
– Jalankan tugas yang ditentukan sebulan sekali pada tengah malam pada hari pertama bulan itu. Setara dengan0 0 1 * *
@weekly
– Jalankan tugas yang ditentukan tanpa seminggu seminggu di tengah malam pada hari Minggu. Setara dengan0 0 * * 0
@daily
– Jalankan tugas yang ditentukan sekali sehari pada tengah malam. Setara dengan0 0 * * *
@hourly
– Jalankan tugas yang ditentukan setiap satu jam sekali. Setara dengan0 * * * *
@reboot
– Jalankan tugas yang ditentukan pada saat startup sistem (waktu boot).
Perintah Crontab di Linux
Perintah crontab memungkinkan Anda untuk menginstal atau membuka file crontab untuk diedit. Anda dapat menggunakan perintah crontab untuk melihat, menambah, menghapus, atau memodifikasi pekerjaan cron menggunakan opsi berikut:
crontab -e
– Edit file crontab, atau buat file jika belum ada.crontab -l
– Menampilkan konten file crontab.crontab -r
– Hapus file crontab Anda saat ini.crontab -i
– Hapus file crontab Anda saat ini dengan prompt sebelum dihapus.crontab -u
<username> – Edit file penggunaan crontab lainnya. Membutuhkan hak administrator sistem.
Perintah crontab membuka file crontab menggunakan editor yang ditentukan oleh variable environment VISUAL atau EDITOR.
Variabel Environment Penggunaan Crontab
Daemon cron secara otomatis menetapkan beberapa variabel environment .
- Path default diatur ke
PATH=/usr/bin:/bin
. Jika perintah yang Anda panggil ada di jalur yang ditentukan cron, Anda bisa menggunakan jalur absolut ke perintah atau mengubah variabel$PATH
cron. Anda tidak dapat menambahkan secara implisit:$PATH
seperti yang akan Anda lakukan dengan skrip normal. - Shell default diatur ke
/bin/sh
. Anda dapat mengatur shell yang berbeda dengan mengubah variabelSHELL
. - Cron menjalankan perintah dari direktori home pengguna. Variabel
HOME
dapat ditimpa oleh pengaturan di crontab. - Notifikasi email dikirim ke pemilik crontab. Untuk menimpa perilaku default, Anda dapat menggunakan variabel environment
MAILTO
dengan daftar (dipisahkan koma) dari semua alamat email yang ingin Anda terima notifikasi email. JikaMAILTO
didefinisikan tetapi kosong (MAILTO=""
), maka tidak ada email yang dikirim.
Pembatasan Crontab
Administrator sistem dapat mengontrol pengguna mana yang memiliki akses ke perintah crontab
dengan menggunakan file /etc/cron.deny
dan /etc/cron.allow
. File-file tersebut terdiri dari daftar nama pengguna, satu nama pengguna per baris.
File /etc/cron.deny
tersedia Secara default, namun file tersebut kosong, yang berarti bahwa semua pengguna dapat menggunakan perintah crontab. Jika Anda ingin menolak akses ke perintah crontab ke pengguna tertentu, tambahkan nama pengguna ke file cron.deny
.
Jika file/etc/cron.allow
ada, hanya pengguna yang terdaftar dalam file ini yang dapat menggunakan perintah crontab
. Jika tidak ada file cron.allow
, hanya pengguna dengan hak administratif (root atau pengguna dengan hak sudo) yang dapat menggunakan perintah crontab
.
Contoh dan Format Cron Jobs
Di bawah ini adalah beberapa contoh cron jobs yang akan menunjukkan kepada Anda bagaimana menjadwalkan tugas untuk dijalankan pada periode waktu yang berbeda.
- Jalankan perintah pada pukul 15:00 setiap hari dari Senin hingga Jumat:
0 15 * * 1-5 perintah
- Jalankan skrip setiap 5 menit dan arahkan kembali output standar ke
dev null
, hanya kesalahan standar yang akan dikirim ke alamat email yang ditentukan:MAILTO=[email protected] */5 * * * * /path/to/script.sh > /dev/null
- Jalankan dua perintah setiap hari Monday (Senin) jam 3 sore (gunakan operator && di antara perintah):
0 15 * * Mon command1 && command2
- Jalankan skrip PHP setiap 2 menit dan tulis hasilnya ke file:
*/2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
- Jalankan skrip setiap hari, setiap jam, pada jam tersebut, dari jam 8 pagi hingga jam 4 sore:
00 08-16 * * * /jalur/ke/script.sh
- Jalankan skrip pada hari Senin pertama setiap bulan, pada pukul 7 pagi.
0 7 1-7 * 1 /path/to/script.sh
- Jalankan skrip pada pukul 21:15, pada tanggal 1 dan 15 setiap bulan:
15 9 1,15 * * /path/to/script.sh
- Tetapkan variabel
HOME
,PATH
,SHELL
danMAILTO
khusus dan jalankan perintah setiap menit.HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/bin/zsh [email protected] */1 * * * * command
Kesimpulan
Anda telah belajar cara membuat pekerjaan cron dan menjadwalkan tugas pada tanggal dan waktu tertentu. Jika Anda merasa “tersiksa” menggunakan baris perintah, Anda dapat menggunakan versi GUI yang lebih ramah pemula dengan menggunakan webmin untuk debian dan Ubuntu atau webmin untuk CentOS dan RHEL.