Android

Penjadualan kerja cron dengan crontab

Tutorial Management Penjadwalan Proses Debain Dengan Crontab Part 1

Tutorial Management Penjadwalan Proses Debain Dengan Crontab Part 1

Isi kandungan:

Anonim

Cron adalah daemon penjadualan yang melaksanakan tugas pada jarak tertentu. Tugas-tugas ini dipanggil pekerjaan cron dan kebanyakannya digunakan untuk mengautomasikan sistem penyelenggaraan atau pentadbiran.

Sebagai contoh, anda boleh menetapkan tugas cron untuk mengautomasikan tugas berulang seperti membuat sandaran pangkalan data atau data, mengemas kini sistem dengan patch keselamatan terkini, menyemak penggunaan ruang cakera, menghantar e-mel dan sebagainya. Sesetengah aplikasi, seperti Drupal atau Magento, memerlukan pekerjaan cron untuk melaksanakan tugas tertentu.

Pekerjaan cron boleh dijadualkan dijalankan oleh satu minit, jam, hari pada bulan, bulan, hari dalam seminggu atau apa-apa kombinasi dari ini.

Apakah Fail Crontab

Crontab (jadual cron) adalah fail teks yang menentukan jadual kerja cron. Terdapat dua jenis fail crontab. Fail crontab seluruh sistem dan fail pengguna crontab individu.

Fail pengguna crontab disimpan oleh nama pengguna, dan lokasi mereka berbeza-beza oleh sistem pengendalian. Dalam sistem berasaskan Red Hat seperti CentOS, fail crontab disimpan dalam direktori /var/spool/cron semasa pada fail Debian dan Ubuntu disimpan dalam direktori /var/spool/cron/crontabs .

Walaupun anda boleh mengedit fail crontab pengguna secara manual, disarankan untuk menggunakan arahan crontab .

/etc/crontab dan fail dalam direktori /etc/cron.d adalah fail crontab seluruh sistem yang boleh diedit hanya oleh pentadbir sistem.

Di kebanyakan pengedaran Linux, anda juga boleh memasukkan skrip di dalam direktori /etc/cron.{hourly, daily, weekly, monthly} dan skrip akan dilaksanakan setiap hour/day/week/month .

Syntax dan Operator Crontab

Setiap baris dalam fail crontab pengguna mengandungi enam medan yang dipisahkan oleh ruang yang diikuti oleh perintah yang hendak 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 mungkin mengandungi satu atau lebih nilai, dipisahkan oleh koma atau julat nilai yang dipisahkan oleh tanda hubung.

  • * Pengendali asterisk bermaksud sebarang nilai atau selalu. Jika anda mempunyai simbol asterisk dalam medan Jam, ia bermakna tugas akan dilakukan setiap jam. , - Operator koma membenarkan anda menentukan senarai nilai untuk pengulangan. Contohnya, jika anda mempunyai 1, 3, 5 dalam bidang Jam, tugas itu akan dijalankan pada jam 1 pagi, 3 pagi dan 5 pagi. - Pengendali hubung membolehkan anda menentukan julat nilai. Sekiranya anda mempunyai 1-5 pada hari Minggu, tugas akan dijalankan setiap hari bekerja (Dari Isnin hingga Jumaat). / -Transaksi slash membolehkan anda menentukan nilai-nilai yang akan diulangi selang tertentu di antara mereka. Sebagai contoh, jika anda mempunyai */4 dalam medan Jam, ia bermakna tindakan akan dilakukan setiap empat jam. Ia sama dengan menyatakan 0, 4, 8, 12, 16, 20 . Daripada asterisk sebelum operator slash, anda juga boleh menggunakan pelbagai nilai, 1-30/10 sama dengan 1, 11, 21 .

File Crontab seluruh sistem

Sintaks fail crontab seluruh sistem adalah sedikit berbeza daripada crontab pengguna. Ia mengandungi medan pengguna mandatori tambahan yang menentukan pengguna mana yang akan menjalankan tugas cron.

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

Macros yang telah ditetapkan

Terdapat beberapa makro jadual Cron khas yang digunakan untuk menentukan selang masa yang biasa. Anda boleh menggunakan pintasan ini sebagai pengganti spesifikasi tarikh lima lajur.

  • @yearly (atau @annually ) - Jalankan tugas yang ditentukan sekali setahun pada tengah malam (12:00 pagi) pada 1 Januari. Setaraf dengan 0 0 1 1 * . @monthly - Jalankan tugas yang ditentukan sekali sebulan 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 Ahad. Setara dengan 0 0 * * 0 . @daily - Jalankan tugas yang ditentukan sekali sehari pada tengah malam. Setara dengan 0 0 * * * . @hourly - Jalankan tugas yang ditentukan sekali sejam pada awal jam. Bersamaan dengan 0 * * * * . @reboot - Jalankan tugas yang ditentukan pada permulaan sistem (boot-time).

Perintah Crontab Linux

Perintah crontab membolehkan anda memasang atau membuka fail crontab untuk mengedit.

Anda boleh menggunakan perintah crontab untuk melihat, menambah, mengalih keluar atau mengubah suai pekerjaan cron menggunakan pilihan berikut:

  • crontab -e - Edit fail crontab, atau buat satu jika ia tidak lagi wujud. crontab -l - Paparkan kandungan fail crontab. crontab -r - Keluarkan fail crontab semasa anda. crontab -i - Keluarkan fail crontab semasa dengan segera sebelum penyingkiran. crontab -u - Edit fail crontab lain yang digunakan. Memerlukan keistimewaan pentadbir sistem.

Perintah crontab membuka fail crontab menggunakan editor yang ditentukan oleh pembolehubah persekitaran VISUAL atau EDITOR .

Pembolehubah Crontab

Daemon cron secara automatik menetapkan beberapa pembolehubah persekitaran.

  • Laluan lalai diset ke PATH=/usr/bin:/bin . Sekiranya arahan yang anda panggil hadir dalam laluan yang ditentukan oleh cron, anda boleh menggunakan laluan mutlak kepada arahan atau menukar pembolehubah cron $PATH . Anda tidak boleh menambahkan secara tersirat :$PATH seperti yang anda lakukan dengan skrip biasa. Cakera lalai diset ke /bin/sh . Anda boleh menetapkan shell berbeza dengan menukar pembolehubah SHELL.Cron memanggil arahan dari direktori rumah pengguna. Pembolehubah HOME boleh ditindih oleh tetapan dalam crontab. Pemberitahuan e-mel dihantar kepada pemilik crontab. Untuk menindih tingkah laku lalai, anda boleh menggunakan MAILTO persekitaran MAILTO dengan senarai (dipisahkan koma) semua alamat e-mel yang anda mahu terima pemberitahuan e-mel. Jika MAILTO ditakrif tetapi kosong ( MAILTO="" ), tiada mel dihantar.

Sekatan Crontab

Pentadbir sistem boleh mengawal pengguna mana yang mempunyai akses kepada arahan crontab dengan menggunakan fail /etc/cron.allow dan /etc/cron.allow . Fail mengandungi senarai nama pengguna, satu nama pengguna per baris.

Secara lalai hanya fail /etc/cron.deny ada dan kosong, bermakna semua pengguna boleh menggunakan arahan crontab. Jika anda mahu menafikan akses kepada arahan crontab kepada pengguna tertentu, tambahkan nama pengguna untuk fail ini.

Jika fail /etc/cron.allow wujud hanya pengguna yang disenaraikan dalam fail ini boleh menggunakan arahan crontab .

Sekiranya tiada fail, hanya pengguna yang mempunyai hak pentadbiran boleh menggunakan arahan crontab .

Contoh Pekerjaan Cron

Berikut adalah beberapa contoh pekerjaan cron yang akan menunjukkan kepada anda cara menjadualkan tugas untuk berjalan pada tempoh masa yang berbeza.

  • Jalankan arahan pukul 15:00 pada setiap hari dari Isnin hingga Jumaat:

    0 15 * * 1-5 command

    Jalankan skrip setiap 5 minit dan alihkan output standard ke dev null , hanya ralat standard yang akan dihantar ke alamat e-mel yang ditentukan:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    Jalankan dua arahan setiap hari Isnin pada pukul 3 petang (gunakan pengendali && antara perintah):

    0 15 * * Mon command1 && command2

    Jalankan skrip PHP setiap 2 minit dan tulis output ke fail:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    Jalankan skrip setiap hari, setiap jam, pada jam, dari 8 pagi hingga 4 petang:

    00 08-16 * * * /path/to/script.sh

    Jalankan skrip pada Isnin pertama setiap bulan, jam 7 pagi

    0 7 1-7 * 1 /path/to/script.sh

    Jalankan skrip pukul 9:15 malam, pada hari pertama dan ke-15 setiap bulan:

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

    Tetapkan adat HOME , PATH , SHELL dan MAILTO ubah dan jalankan arahan setiap minit.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

Kesimpulannya

Anda telah belajar bagaimana membuat kerja cron dan menjadualkan tugas pada tarikh dan masa tertentu.

Jangan ragu untuk meninggalkan komen jika anda mempunyai sebarang pertanyaan.

terminal cron crontab