Cron adalah daemon penjadwalan yang mengeksekusi tugas pada interval tertentu. Tugas ini disebut tugas cron dan sebagian besar digunakan untuk mengotomatiskan pemeliharaan atau administrasi sistem.
Misalnya, Anda dapat menyetel tugas cron untuk mengotomatiskan tugas berulang seperti mencadangkan basis data atau data, memperbarui sistem dengan patch keamanan terbaru, memeriksa penggunaan ruang disk, mengirim email, dan sebagainya.
Pekerjaan cron dapat dijadwalkan untuk dijalankan dalam satu menit, jam, hari dalam sebulan, bulan, hari dalam seminggu, atau kombinasi dari semuanya.
Apa itu File Crontab #
Crontab (cron table) adalah file teks yang menentukan jadwal pekerjaan cron. Ada dua jenis file crontab. File crontab seluruh sistem dan file crontab pengguna individu.
File crontab pengguna diberi nama sesuai dengan nama pengguna, dan lokasinya bervariasi menurut sistem operasi. Dalam distribusi berbasis Red Hat seperti CentOS, file crontab disimpan di /var/spool/cron
direktori, sedangkan di Debian dan Ubuntu file disimpan di /var/spool/cron/crontabs
direktori.
Meskipun Anda dapat mengedit file crontab pengguna secara manual, disarankan untuk menggunakan crontab
perintah.
/etc/crontab
file dan skrip di dalam /etc/cron.d
direktori adalah file crontab seluruh sistem yang hanya dapat diedit oleh administrator sistem.
Di sebagian besar distribusi Linux, Anda juga dapat meletakkan skrip di dalam /etc/cron.{hourly,daily,weekly,monthly}
direktori, dan skrip akan dieksekusi setiap hour/day/week/month
.
Sintaks dan Operator Crontab #
Setiap baris dalam file crontab pengguna berisi enam bidang yang dipisahkan oleh spasi diikuti dengan perintah yang akan dijalankan.
* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
Lima bidang pertama dapat berisi satu atau beberapa nilai, dipisahkan dengan koma atau rentang nilai yang dipisahkan oleh tanda hubung.
*
- Operator tanda bintang berarti nilai apa pun atau selalu. Jika Anda memiliki simbol asterisk 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.-
- Operator tanda hubung memungkinkan Anda menentukan rentang nilai. Jika Anda memiliki1-5
di bidang Hari dalam seminggu, tugas akan dijalankan setiap hari kerja (Dari Senin hingga Jumat)./
- Operator garis miring memungkinkan Anda menentukan nilai yang akan diulang selama interval tertentu di antara nilai tersebut. Misalnya, jika Anda memiliki*/4
di bidang Jam, itu berarti 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 Seluruh Sistem #
Sintaks file crontab seluruh sistem sedikit berbeda dari crontab pengguna. Ini berisi bidang pengguna wajib tambahan yang menentukan pengguna mana yang akan menjalankan tugas cron.
* * * * * <username> command(s)
Makro Standar #
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@yearly
) - Jalankan tugas yang ditentukan setahun sekali pada tengah malam (12:00) 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 seminggu sekali pada tengah malam pada hari Minggu. Setara dengan0 0 * * 0
.@daily
- Jalankan tugas yang ditentukan sekali sehari di tengah malam. Setara dengan0 0 * * *
.@hourly
- Jalankan tugas yang ditentukan sekali dalam satu jam di awal jam. Setara dengan0 * * * *
.@reboot
- Jalankan tugas yang ditentukan pada startup sistem (waktu boot).
Perintah Crontab Linux #
crontab
perintah memungkinkan Anda untuk menginstal, melihat, atau membuka file crontab untuk diedit:
crontab -e
- Edit file crontab, atau buat 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 perintah sebelum menghapusnya.crontab -u <username>
- Edit file crontab pengguna lain. Opsi ini memerlukan hak administrator sistem.
Perintah crontab membuka file crontab menggunakan editor yang ditentukan oleh VISUAL
atau EDITOR
variabel lingkungan.
Variabel Crontab #
Daemon cron secara otomatis menyetel beberapa variabel lingkungan.
- Jalur default disetel ke
PATH=/usr/bin:/bin
. Jika perintah yang Anda jalankan tidak ada di jalur yang ditentukan cron, Anda dapat menggunakan jalur absolut ke perintah atau mengubah$PATH
cron variabel. Anda tidak dapat secara implisit menambahkan:$PATH
seperti yang Anda lakukan dengan skrip biasa. - Shell default disetel ke
/bin/sh
. Untuk mengubah shell yang berbeda, gunakanSHELL
variabel. - Cron memanggil perintah dari direktori home pengguna.
HOME
variabel dapat diatur di crontab. - Pemberitahuan email dikirim ke pemilik crontab. Untuk menimpa perilaku default, Anda dapat menggunakan
MAILTO
variabel lingkungan dengan daftar (dipisahkan koma) dari semua alamat email yang Anda inginkan untuk menerima pemberitahuan email. KetikaMAILTO
didefinisikan tetapi kosong (MAILTO=""
), tidak ada email yang dikirim.
Pembatasan Crontab #
/etc/cron.deny
dan /etc/cron.allow
file memungkinkan Anda mengontrol pengguna mana yang memiliki akses ke crontab
memerintah. File terdiri dari daftar nama pengguna, satu nama pengguna per baris.
Secara default, hanya /etc/cron.deny
file ada dan kosong, yang berarti semua pengguna dapat menggunakan perintah crontab. Jika Anda ingin menolak akses ke perintah crontab untuk pengguna tertentu, tambahkan nama pengguna ke file ini.
Jika /etc/cron.allow
file yang ada hanya pengguna yang terdaftar dalam file ini yang dapat menggunakan crontab
perintah.
Jika tidak ada file yang ada, hanya pengguna dengan hak administratif yang dapat menggunakan crontab
perintah.
Contoh Pekerjaan Cron #
Berikut adalah beberapa contoh cron job yang menunjukkan cara 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 command
-
Jalankan skrip setiap 5 menit dan arahkan output standar ke
dev null
, hanya kesalahan standar yang akan dikirim ke alamat email yang ditentukan:[email protected] */5 * * * * /path/to/script.sh > /dev/null
-
Jalankan dua perintah setiap hari Senin jam 3 sore (gunakan operator
&&
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, setiap jam, dari jam 8 pagi sampai jam 4 sore:
00 08-16 * * * /path/to/script.sh
-
Jalankan skrip pada hari Senin pertama setiap bulan, pukul 7 pagi
0 7 1-7 * 1 /path/to/script.sh
-
Jalankan skrip pada 21:15, pada tanggal 1 dan 15 setiap bulan:
15 9 1,15 * * /path/to/script.sh
-
Setel
HOME
custom khusus ,PATH
,SHELL
danMAILTO
variabel dan menjalankan perintah setiap menit.HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command
Kesimpulan #
Cron adalah daemon yang memungkinkan Anda menjadwalkan tugas pada tanggal dan waktu tertentu.
Jangan ragu untuk meninggalkan komentar jika Anda memiliki pertanyaan.