<Sebelumnya | Konten | Selanjutnya>
Sebaiknya pilih waktu eksekusi yang aneh, karena pekerjaan sistem sering kali dijalankan pada jam-jam "berputar", seperti yang dapat Anda lihat di Bagian 4.4.4 bagian berikutnya. Misalnya, pekerjaan sering dijalankan tepat pukul 1 pagi (misalnya pengindeksan sistem untuk memperbarui basis data lokasi standar), jadi memasukkan waktu 0100 dapat dengan mudah memperlambat sistem Anda daripada menjalankannya. Untuk mencegah pekerjaan berjalan secara bersamaan, Anda juga dapat menggunakan sekumpulan perintah, yang mengantri memproses dan mengumpankan pekerjaan dalam antrean ke sistem dengan cara yang seimbang secara merata, mencegah penggunaan sumber daya sistem yang berlebihan. Lihat halaman Info untuk informasi lebih lanjut.
4.4.4. Cron dan crontab
Sistem cron dikelola oleh cron daemon. Itu mendapat informasi tentang program mana dan kapan harus dijalankan dari entri crontab sistem dan pengguna. Hanya pengguna root yang memiliki akses ke crontab sistem, sedangkan setiap pengguna hanya boleh memiliki akses ke crontabnya sendiri. Pada beberapa sistem (beberapa) pengguna mungkin tidak memiliki akses ke fasilitas cron.
Saat memulai sistem, daemon cron mencari / var / spool / cron / untuk entri crontab yang dinamai menurut akun di / etc / passwd, itu mencari /etc/cron.d/ dan itu mencari / etc / crontab, lalu gunakan informasi ini setiap menit untuk memeriksa apakah ada sesuatu yang harus dilakukan. Itu mengeksekusi perintah sebagai pengguna yang memiliki file crontab dan mengirimkan output perintah apa pun kepada pemiliknya.
Pada sistem yang menggunakan cron Vixie, pekerjaan yang terjadi setiap jam, harian, mingguan, dan bulanan disimpan dalam direktori terpisah di / Etc untuk menyimpan gambaran umum, berbeda dengan fungsi cron UNIX standar, di mana semua tugas dimasukkan ke dalam satu file besar.
Contoh file crontab Vixie:
[root@blob /dll]# lebih banyak crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
RUMAH=/
# run-part
# perintah untuk dieksekusi setiap jam
01 * * * * root run-parts /etc/cron.hourly
# perintah untuk dijalankan setiap hari
02 4 * * * root run-parts /etc/cron.daily
# perintah untuk dieksekusi setiap minggu
22 4 * * 0 root run-parts /etc/cron.weekly perintah untuk dieksekusi setiap bulan
42 4 1 * * root run-parts /etc/cron.monthly
[root@blob /dll]# lebih banyak crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
RUMAH=/
# run-part
# perintah untuk dieksekusi setiap jam
01 * * * * root run-parts /etc/cron.hourly
# perintah untuk dijalankan setiap hari
02 4 * * * root run-parts /etc/cron.daily
# perintah untuk dieksekusi setiap minggu
22 4 * * 0 root run-parts /etc/cron.weekly perintah untuk dieksekusi setiap bulan
42 4 1 * * root run-parts /etc/cron.monthly
Alternatif
Anda juga bisa menggunakan crontab -l perintah untuk menampilkan crontab.
Beberapa variabel ditetapkan, dan setelah itu ada penjadwalan aktual, satu baris per pekerjaan, dimulai dengan 5 bidang waktu dan tanggal. Bidang pertama berisi menit (dari 0 hingga 59), yang kedua menentukan jam eksekusi (0-23), yang ketiga adalah hari dalam sebulan (1-31), lalu nomor bulan (1-12) , yang terakhir adalah hari dalam seminggu (0-7, 0 dan 7 adalah hari Minggu). Tanda bintang di bidang ini mewakili rentang total yang dapat diterima untuk bidang tersebut. Daftar diperbolehkan; untuk menjalankan pekerjaan dari Senin sampai Jumat masukkan 1-5 di bidang terakhir, untuk menjalankan pekerjaan pada hari Senin, Rabu dan Jumat masukkan 1,3,5.
Kemudian muncul pengguna yang harus menjalankan proses yang tercantum di kolom terakhir. Contoh di atas adalah dari konfigurasi cron Vixie di mana root menjalankan program run-part secara berkala, dengan direktori yang sesuai sebagai opsi. Di direktori ini, pekerjaan aktual yang akan dieksekusi pada waktu yang dijadwalkan disimpan sebagai skrip shell, seperti skrip kecil ini yang dijalankan setiap hari untuk memperbarui database yang digunakan oleh menemukan perintah:
billy@ahost cron.harian]$ slokasi kucing.cron
# / Bin / sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
billy@ahost cron.harian]$ slokasi kucing.cron
# / Bin / sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
Pengguna seharusnya mengedit crontab mereka dengan cara yang aman menggunakan crontab -e memerintah. Ini akan mencegah pengguna membuka lebih dari satu salinan file crontabnya secara tidak sengaja. Editor defaultnya adalah vi (lihat Bab 6, tetapi Anda dapat menggunakan editor teks apa pun, seperti gwim or gedit jika Anda merasa lebih nyaman dengan editor GUI.
Saat Anda keluar, sistem akan memberi tahu Anda bahwa crontab baru telah diinstal.
Entri crontab ini mengingatkan billy untuk pergi ke klub olahraganya setiap Kamis malam:
billy:~> crontab-l
# JANGAN EDIT FILE INI - edit master dan instal ulang.
# (/tmp/crontab.20264 diinstal pada Minggu 20 Juli 22:35:14 2003)
billy:~> crontab-l
# JANGAN EDIT FILE INI - edit master dan instal ulang.
# (/tmp/crontab.20264 diinstal pada Minggu 20 Juli 22:35:14 2003)
# (Versi Cron -- $Id: chap4.xml,v 1.28 2007/09/19 12:22:26 tille Exp $)
38 16 * * 3 mail -s "sport evening" billy
# (Versi Cron -- $Id: chap4.xml,v 1.28 2007/09/19 12:22:26 tille Exp $)
38 16 * * 3 mail -s "sport evening" billy
Setelah menambahkan tugas terjadwal baru, sistem akan memberi tahu Anda bahwa crontab baru telah diinstal. Anda tidak perlu memulai ulang cron daemon agar perubahan diterapkan. Dalam contoh, billy menambahkan baris baru yang menunjuk ke skrip cadangan:
billy:~> -e crontab
45 15 * * 3 mail -s "sport evening" billy
4 4 * * 4,7 /home/billy/bin/backup.sh
<--menulis dan keluar-->
crontab: menginstal crontab billy baru:~>
billy:~> -e crontab
45 15 * * 3 mail -s "sport evening" billy
4 4 * * 4,7 /home/billy/bin/backup.sh
<--menulis dan keluar-->
crontab: menginstal crontab billy baru:~>
The backup.sh script dieksekusi setiap hari Kamis dan Minggu. Lihat Bagian 7.2.5 untuk pengenalan skrip shell. Ingatlah bahwa output dari perintah, jika ada, dikirimkan ke pemilik file crontab. Jika tidak ada layanan email yang dikonfigurasi, Anda mungkin menemukan output dari perintah Anda di kotak surat lokal Anda,
/var/spool/mail/ , file teks biasa.