Android

Menjadwalkan pekerjaan cron dengan crontab

Tutorial Konfigurasi Samba Server, Crontab dan Web Server di CentOS 6.7 Part 2

Tutorial Konfigurasi Samba Server, Crontab dan Web Server di CentOS 6.7 Part 2

Daftar Isi:

Anonim

Cron adalah daemon penjadwalan yang menjalankan tugas pada interval yang ditentukan. Tugas-tugas ini disebut pekerjaan cron dan sebagian besar digunakan untuk mengotomatisasi pemeliharaan atau administrasi sistem.

Misalnya, Anda dapat mengatur tugas cron untuk mengotomatiskan tugas yang berulang seperti mencadangkan basis data atau data, memperbarui sistem dengan tambalan keamanan terbaru, memeriksa penggunaan ruang disk, mengirim email dan sebagainya. Beberapa aplikasi, seperti Drupal atau Magento, membutuhkan pekerjaan cron untuk melakukan tugas tertentu.

Pekerjaan cron dapat dijadwalkan untuk dijalankan satu menit, jam, hari dalam sebulan, bulan, hari dalam seminggu atau kombinasi dari semuanya.

Apa itu File Crontab

Crontab (tabel cron) 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 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 menggunakan perintah crontab .

/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} , /etc/cron.{hourly, daily, weekly, monthly} , /etc/cron.{hourly, daily, weekly, monthly} , /etc/cron.{hourly, daily, weekly, monthly} 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 oleh 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 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 asterisk di bidang Jam, itu berarti tugas akan dilakukan setiap jam. , -Operator koma memungkinkan Anda menentukan daftar nilai untuk pengulangan. Misalnya, jika Anda memiliki 1, 3, 5 di bidang Jam, tugas akan berjalan pada jam 1 pagi, 3 pagi dan 5 pagi. - -tanda hubung memungkinkan Anda untuk menentukan rentang nilai. Jika Anda memiliki 1-5 di bidang Hari dalam seminggu, 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, itu berarti tindakan akan dilakukan setiap empat jam. Ini sama dengan menentukan 0, 4, 8, 12, 16, 20 . Alih-alih tanda bintang sebelum operator garis miring, Anda juga dapat menggunakan rentang nilai, 1-30/10 artinya sama dengan 1, 11, 21 .

File Crontab di seluruh sistem

Sintaksis file crontab seluruh sistem sedikit berbeda dari crontab pengguna. Ini berisi bidang pengguna wajib tambahan yang menentukan pengguna mana yang akan menjalankan pekerjaan cron.

* * * * * command(s) * * * * * command(s)

Makro yang telah ditentukan

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 dengan 0 0 1 1 * . @monthly - Jalankan tugas yang ditentukan sebulan sekali pada tengah malam pada hari pertama bulan itu. Setara dengan 0 0 1 * * . @weekly - Jalankan tugas yang ditentukan seminggu sekali pada tengah malam pada hari Minggu. Setara dengan 0 0 * * 0 . @daily - Jalankan tugas yang ditentukan sekali sehari pada tengah malam. Setara dengan 0 0 * * * . @hourly - Jalankan tugas yang ditentukan satu jam sekali pada awal jam. Setara dengan 0 * * * * . @reboot - Jalankan tugas yang ditentukan pada startup sistem (waktu boot).

Perintah Linux Crontab

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 satu 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 - Edit file penggunaan crontab lainnya. Membutuhkan hak administrator sistem.

Perintah crontab membuka file crontab menggunakan editor yang ditentukan oleh variabel lingkungan VISUAL atau EDITOR .

Variabel Crontab

Daemon cron secara otomatis menetapkan beberapa variabel lingkungan.

  • 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 biasa. Shell default diatur ke /bin/sh . Anda dapat mengatur shell yang berbeda dengan mengubah variabel SHELL.Cron memanggil perintah dari direktori home pengguna. Variabel HOME dapat ditimpa oleh pengaturan di crontab. Pemberitahuan email dikirim ke pemilik crontab. Untuk menimpa perilaku default, Anda dapat menggunakan variabel lingkungan MAILTO dengan daftar (dipisahkan koma) dari semua alamat email yang ingin Anda terima notifikasi email. Jika MAILTO didefinisikan tetapi kosong ( MAILTO="" ), 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.

Secara default hanya file /etc/cron.deny ada dan 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 ini.

Jika file /etc/cron.allow hanya ada pengguna yang terdaftar dalam file ini dapat menggunakan perintah crontab .

Jika tidak ada file, hanya pengguna dengan hak administratif yang dapat menggunakan perintah crontab .

Contoh Pekerjaan Cron

Di bawah ini adalah beberapa contoh pekerjaan cron 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 command

    Jalankan skrip setiap 5 menit dan arahkan kembali 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, mulai pukul 08.00 hingga 16.00:

    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 pukul 21:15, pada tanggal 1 dan 15 setiap bulan:

    15 9 1, 15 * * /path/to/script.sh

    Tetapkan variabel HOME , PATH , SHELL , dan MAILTO dan jalankan 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

Anda telah belajar cara membuat pekerjaan cron dan menjadwalkan tugas pada tanggal dan waktu tertentu.

Jangan ragu untuk meninggalkan komentar jika Anda memiliki pertanyaan.

terminal cron crontab