Sistem GNU/Linux mendukung beberapa utilitas untuk penjadwalan tugas. Utilitas cron adalah yang paling banyak didukung. Ini memungkinkan Anda untuk menjadwalkan tugas yang akan dijalankan di latar belakang secara berkala. Utilitas cron menggunakan tabel (crontab) dengan daftar skrip atau perintah yang akan dieksekusi dan waktu eksekusinya.
Menjadwalkan tugas
Pengguna normal dapat menggunakan perintah crontab untuk mengelola pekerjaan mereka. Perintah ini dapat dipanggil dengan empat cara berbeda:
Perintah | Fungsi |
---|---|
crontab -l | Mencantumkan pekerjaan untuk pengguna saat ini |
crontab -r | Hapus semua pekerjaan untuk pengguna saat ini. |
crontab -e | Mengedit pekerjaan untuk pengguna saat ini. |
crontab [nama file] | Hapus semua pekerjaan, dan ganti dengan pekerjaan yang dibaca dari [nama file]. Jika tidak ada file yang ditentukan, stdin akan digunakan. |
Cara mengedit dan melihat crontab
Saat mengedit tugas dengan “crontab -e “, editor akan dijalankan (vi secara default. kecuali variabel lingkungan EDITOR telah disetel ke sesuatu yang berbeda). File yang sedang diedit akan memiliki satu pekerjaan per baris. Baris kosong diperbolehkan, dan komentar memulai barisnya dengan simbol hash (#).
# crontab -e
Saat Anda menjalankan perintah "crontab -e" tanpa opsi apa pun, crontab dari pengguna yang saat ini masuk akan diedit secara default. Untuk mengedit crontab pengguna lain, Anda dapat menggunakan opsi -u dengan perintah crontab. Misalnya, untuk mengedit crontab pengguna john.
# crontab -u john -e
Demikian pula, untuk melihat crontab pengguna saat ini, gunakan "crontab -l ” perintah.
# crontab -l
Dan untuk membuat daftar crontab dari pengguna tertentu, gunakan perintah di bawah ini.
# crontab -u john -l
File konfigurasi Cron
Proses latar belakang cron sebagian besar tidak digunakan. Itu bangun sekali setiap menit dan memeriksa /etc/crontab, /etc/cron.d, dan file tabel cron pengguna dan menentukan apakah ada pekerjaan yang perlu dijalankan.
Tabel di bawah ini merangkum tujuan dari berbagai file dan direktori yang digunakan oleh cron. Pengetahuan tentang file dan direktori ini akan membantu Anda memecahkan masalah apa pun serta memahami cron lebih detail.
File | Tujuan |
---|---|
/etc/init.d/crond | Memulai daemon cron di boot sistem. |
/var/log/cron | Pesan sistem yang terkait dengan proses cron. Berguna untuk memecahkan masalah. |
/var/spool/cron/[nama pengguna] | File crontab pengguna disimpan di /var/spool/crondirectory. |
/etc/cron.allow | Menentukan pengguna yang dapat membuat tabel cron. |
/etc/cron.deny | Menentukan pengguna yang tidak diizinkan membuat tabel cron. |
/etc/crontab | Tabel cron sistem yang memiliki perintah untuk menjalankan skrip yang terletak di direktori berikut: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, dan /etc/cron.monthly. |
/etc/cron.d | Direktori yang berisi tabel cron untuk tugas yang perlu dijalankan pada jadwal selain per jam, harian, mingguan, atau bulanan. |
/etc/cron.hourly | Direktori yang berisi skrip sistem untuk dijalankan setiap jam. |
/etc/cron.daily | Direktori yang berisi skrip sistem untuk dijalankan setiap hari. |
/etc/cron.weekly | Direktori yang berisi skrip sistem untuk dijalankan setiap minggu. |
/etc/cron.monthly | Direktori yang berisi skrip sistem untuk dijalankan setiap bulan. |
Sintaks crontab
Pekerjaan masing-masing pengguna disimpan di direktori /var/spool/cron dalam file yang cocok dengan nama pengguna. File-file ini selalu milik root pengguna. File di /var/spool/cron tidak diedit secara langsung. Sebaliknya, sebuah program yang disebut crontab digunakan untuk memanipulasi mereka. Gambar di bawah menunjukkan sintaks tugas cron.
Setiap baris dalam file mendefinisikan pekerjaan. Ada 6 bidang dalam satu baris. 5 bidang pertama menentukan waktu, bidang terakhir berisi perintah untuk dijalankan. Ini bisa berupa semua jenis perintah atau skrip shell. 5 kolom pertama memiliki format berikut:
Field | Rentang |
---|---|
Menit | 0-59 |
Jam | 0-23 |
Hari Setiap Bulan | 1-31 |
Bulan | 0-12 |
Hari kerja | 0-7 |
Contoh tugas cron
1. Jadwalkan pekerjaan pada tanggal 2 Februari, setiap tahun
Anda perlu menjalankan skrip cadangan setahun sekali pada tanggal tertentu di bulan Februari. Sytax ditunjukkan di bawah ini.
0 9 2 2 * /usr/local/bin/yearly_backup
2. Jadwalkan pekerjaan setiap jam pada menit kelima, setiap hari
Gunakan perintah berikut untuk menjalankan skrip setiap jam pada menit kelima, setiap hari:
5 * * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
3. Jadwalkan pekerjaan 5 menit setelah tengah malam setiap hari
Gunakan perintah berikut untuk menjalankan 5 menit setelah tengah malam setiap hari:
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
4. Jadwalkan pekerjaan pada waktu tertentu pada tanggal satu setiap bulan
Gunakan perintah berikut untuk dijalankan pada pukul 14:15. pada tanggal satu setiap bulan:
15 14 1 * * * $HOME/bin/monthly
5. Jadwalkan pekerjaan pada waktu tertentu hanya pada hari kerja (tidak termasuk hari Sabtu dan Minggu)
Gunakan perintah berikut untuk menjalankan pada 10 P.M. pada hari kerja:
0 22 * * 1-5 $HOME/bin/weekday.job >> $HOME/tmp/out 2>&1
6. Menjadwalkan banyak tugas dalam satu tugas cron
Kami juga dapat menjadwalkan beberapa pekerjaan dalam satu pekerjaan cron menggunakan titik koma (;) pekerjaan terpisah seperti yang ditunjukkan di bawah ini:
0 12 * * * /var/tmp/script01.sh; /var/tmp/script02.sh
7. Menggunakan rentang untuk menentukan waktu mulai
Rentang dapat ditentukan melalui penggunaan tanda hubung. Nilai 1-5 menunjukkan bahwa bidang ini valid untuk angka 1 hingga 5. Jika Anda menggunakan nama alih-alih angka, Anda tidak dapat menentukan rentang. Contoh menentukan rentang ditunjukkan di bawah ini. Pekerjaan dijadwalkan untuk dijalankan setiap jam mulai pukul 3 sore. Sampai jam 10 malam
* 3-10 * * * /var/tmp/script.sh
8. Menggunakan nilai langkah untuk menentukan waktu mulai
Nilai langkah dapat digunakan bersama dengan rentang. Untuk menentukan nilai langkah, ikuti rentang dengan garis miring (/) dan angka. Angka yang ditentukan adalah nilai langkah. Misalnya, berikut ini menetapkan bahwa setiap nilai ketiga (dalam hal ini, 2, 5, 8, dan 11) harus cocok:
* 0-12/3 * * * /var/tmp/script.sh
Nilai langkah juga dapat digunakan dengan tanda bintang. Nilai */3 di bidang jam akan cocok setiap jam ketiga (0, 3, 6, 9, 12, 15, 18, dan 21).
9. Menggunakan daftar untuk menentukan waktu mulai
Daftar juga dapat diterima; setiap item dalam daftar dipisahkan dengan koma. Adalah umum untuk menggunakan daftar dalam hubungannya dengan rentang, seperti:
1-15,31-45 * * * * /var/tmp/script.sh
Contoh ini cocok dengan semua angka (menit dalam kasus kami) dari 1 hingga 15 dan dari 31 hingga 45. Jika Anda menggunakan nama alih-alih angka, Anda tidak dapat menentukan daftar.
10. Jadwalkan pekerjaan pada pukul 04:45, pada tanggal 1, 10, dan 22 setiap bulan
Di bawah ini adalah contoh menjalankan pekerjaan pada waktu tertentu pada beberapa hari tertentu dalam sebulan.
45 4 1,10,22 * * /apps/bin/backup.sh
Makro Tab Cron
Kita dapat menambahkan makro di file crontab. Misalnya, gunakan yang berikut ini untuk memulai ulang "my_script" setelah setiap reboot:
@reboot /var/tmp/my_script
Berikut ini adalah ringkasan dari beberapa makro lainnya:
Menangani Keluaran
Sebuah skrip sering mencetak sesuatu ke layar, baik untuk debugging, pembaruan status, atau untuk mencatat kesalahan. Apa pun yang dicetak pekerjaan ke layar akan dikirim dalam email ke pengguna saat ini, yang dapat ditimpa dengan variabel MAILTO di dalam crontab.
# crontab -l MAIL=john 0 2 * * * /apps/bin/backup.shCara menjadwalkan Pekerjaan dengan Cron di Linux
Mendefinisikan Pekerjaan Sistem Menggunakan Cron di Linux
UNIX / Linux :Bagaimana crontab memvalidasi akses berdasarkan file cron.allow dan cron.deny
CentOS / RHEL :dasar-dasar anacron (Apa itu anacron dan cara mengkonfigurasinya)
CentOS / RHEL :Panduan pemula untuk cron