GNU/Linux >> Belajar Linux >  >> Linux

Menjadwalkan Pekerjaan Cron dengan Crontab

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 memiliki 1,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 memiliki 1-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 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 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 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 di tengah malam. Setara dengan 0 0 * * * .
  • @hourly - Jalankan tugas yang ditentukan sekali dalam satu jam di awal jam. Setara dengan 0 * * * * .
  • @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, gunakan SHELL 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. Ketika MAILTO 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 dan MAILTO 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.


Linux
  1. Menjadwalkan tugas sistem dengan Cron di Linux

  2. Memecahkan Masalah Pekerjaan Cron

  3. Otomatiskan Tugas Sistem dengan crontab di CentOS 7

  1. Cara Menjadwalkan Pekerjaan Cron dengan Crontab

  2. Cron dengan notifikasi-kirim

  3. Pulihkan pekerjaan cron yang tidak sengaja dihapus dengan crontab -r

  1. Menjadwalkan tugas dengan perintah cron Linux

  2. Menggunakan Notify-send Dengan Cron?

  3. Cara Menginstal, Mengedit, atau Menghapus Pekerjaan Cron dalam Mode Batch