Rumah  >  Artikel  >  Tutorial sistem  >  Penjadualan tugas di bawah Linux dibahagikan kepada dua jenis perkhidmatan crontab pengguna

Penjadualan tugas di bawah Linux dibahagikan kepada dua jenis perkhidmatan crontab pengguna

WBOY
WBOYke hadapan
2024-03-11 08:00:231212semak imbas

Pertama keluarkan arahan:

1. Format arahan:

crontab[-user]fail

crontab[-user][-e|-l|-r]

2. Fungsi arahan:

Melalui arahan crontab, kami boleh melaksanakan perintah sistem atau skrip shellscript yang ditentukan pada selang masa tetap. Unit selang masa boleh menjadi minit, jam, hari, bulan, minggu atau mana-mana gabungan di atas. Perintah ini amat sesuai untuk analisis log berkala atau sandaran data.

3. Parameter arahan:

-pengguna: Digunakan untuk menetapkan perkhidmatan crontab pengguna tertentu Contohnya, "-uixdba" bermaksud menetapkan perkhidmatan crontab pengguna ixdba ini biasanya dijalankan oleh pengguna root.

fail: fail ialah nama fail arahan, yang bermaksud fail itu digunakan sebagai fail senarai tugas crontab dan dimuatkan ke dalam crontab. Jika fail ini tidak dinyatakan pada baris arahan, arahan crontab akan menerima arahan yang ditaip pada input standard (tetikus) dan memuatkannya ke dalam crontab.

-e: Edit kandungan fail crontab pengguna. Jika tiada pengguna dinyatakan, ini bermakna mengedit fail crontab pengguna semasa.

-l: Paparkan kandungan fail crontab pengguna tertentu Jika pengguna tidak dinyatakan, ia bermakna memaparkan kandungan fail crontab pengguna semasa.

-r: Padam fail crontab pengguna daripada direktori /var/spool/cron Jika tiada pengguna dinyatakan, fail crontab pengguna semasa akan dipadamkan secara lalai.

-i: Berikan gesaan pengesahan apabila memadam fail crontab pengguna.

Maklumat lanjut:

1. Pengenalan kepada crond

crond ialah proses daemon yang digunakan di bawah Linux untuk melaksanakan tugas tertentu secara berkala atau menunggu untuk mengendalikan insiden individu. Ia adalah serupa dengan tugas yang dijadualkan di bawah Windows Apabila sistem pengendalian dipasang, alat perkhidmatan ini akan dipasang secara lalai dan akan dimulakan secara manual . Proses crond Proses crond akan sentiasa mengesan sama ada terdapat tugasan yang perlu dilaksanakan setiap minit.

Penjadualan tugas di bawah Linux terbahagi kepada dua kategori, penjadualan tugas sistem dan penjadualan tugas pengguna.

Penjadualan tugas sistem: Kerja yang sistem lakukan secara berkala, seperti menulis data cache ke cakera keras, mengosongkan log, dsb. Terdapat fail crontab dalam direktori /etc, iaitu fail konfigurasi untuk penjadualan tugas sistem.

Fail

/etc/crontab termasuk baris berikut:

[root@localhost~]#cat/etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=""HOME=/

#run-parts

51****rootrun-parts/etc/cron.hourly

247***rootrun-parts/etc/cron.daily

224**0rootrun-parts/etc/cron.weekly

4241**rootrun-parts/etc/cron.monthly

[root@localhost~]#

Empat baris pertama digunakan untuk mengkonfigurasi pembolehubah persekitaran untuk menjalankan tugas crond Pembolehubah SHELL dalam baris pertama menentukan shell yang akan digunakan oleh sistem ini untuk melaksanakan arahan. Pembolehubah MAILTO dalam baris ketiga Maklumat pelaksanaan tugas yang ditentukan oleh crond akan dihantar kepada pengguna root melalui e-mel Jika nilai pembolehubah MAILTO kosong, ini bermakna maklumat pelaksanaan tugas tidak akan dihantar kepada pengguna. Pembolehubah HOME dalam baris keempat menentukan nilai yang digunakan semasa melaksanakan arahan atau direktori rumah. Maksud yang dinyatakan oleh baris enam hingga sembilan akan dihuraikan dalam bahagian seterusnya. Tak banyak nak cakap kat sini.

Penjadualan tugas pengguna: tugas yang perlu dilakukan oleh pengguna dengan kerap, seperti sandaran data pengguna, peringatan e-mel biasa, dsb. Pengguna boleh menggunakan alat crontab untuk menyesuaikan tugas berjadual mereka sendiri. Semua fail crontab yang ditentukan pengguna disimpan dalam direktori /var/spool/cron. Nama failnya konsisten dengan nama pengguna.

Fail kebenaran pengguna:

Fail:

/etc/cron.deny

Penerangan:

Pengguna yang disenaraikan dalam fail ini tidak dibenarkan menggunakan arahan crontab

Fail:

/etc/cron.allow

Penerangan:

Pengguna yang disenaraikan dalam fail ini dibenarkan menggunakan arahan crontab

Fail:

/var/spool/cron/

Penerangan:

Direktori tempat semua fail crontab pengguna disimpan dinamakan sempena nama pengguna

Maksud fail crontab:

Dalam fail crontab yang dibina oleh pengguna, setiap baris mewakili tugasan, dan setiap tatasusunan dalam setiap baris mewakili tetapan formatnya dibahagikan kepada enam tatasusunan Lima segmen pertama ialah segmen tetapan masa, dan segmen keenam ialah segmen arahan yang akan dilaksanakan, formatnya adalah seperti berikut:

minithourdaymonthweekcommand

Antaranya:

minit: mewakili minit, yang boleh menjadi sebarang integer dari 0 hingga 59.

jam: mewakili jam, yang boleh menjadi sebarang integer dari 0 hingga 23.

hari: mewakili tarikh, yang boleh berupa sebarang integer dari 1 hingga 31.

bulan: Menunjukkan bulan, yang boleh menjadi sebarang integer dari 1 hingga 12.

minggu: Menunjukkan hari dalam seminggu, yang boleh berupa sebarang integer dari 0 hingga 7, dengan 0 atau 7 mewakili Ahad.

perintah: Perintah yang akan dilaksanakan boleh menjadi arahan sistem atau fail skrip yang disusun sendiri.

Dalam setiap tatasusunan di atas, aksara khas berikut juga boleh digunakan:

Asterisk (*): mewakili semua nilai yang mungkin Contohnya, jika tatasusunan bulan ialah asterisk, ini bermakna operasi arahan akan dilaksanakan setiap bulan selepas syarat sekatan tatasusunan lain dipenuhi.

Kolon (,): Anda boleh menggunakan nilai dipisahkan bertindih untuk menentukan julat senarai, contohnya, "1,2,5,7,8,9"

Zhongdong (-): Anda boleh menggunakan bar sederhana antara integer untuk mewakili julat integerTugas berjadual Linux tidak dilaksanakan, contohnya, "2-6" bermaksud "2,3,4,5,6"

Slash ke hadapan (/): Anda boleh menggunakan garis miring ke hadapan untuk menentukan kekerapan selang masa Contohnya, "0-23/2" bermaksud pelaksanaan setiap dua jam. Pada masa yang sama, garis miring ke hadapan boleh digunakan bersama-sama dengan asterisk, seperti */10 Jika digunakan dalam tatasusunan minit, ini bermakna ia akan dilaksanakan setiap sepuluh minit.

layan crond

Pasang crontab:

yuminstallcrontabs

Arahan operasi perkhidmatan:

/sbin/servicecrondstart//Mulakan perkhidmatan

/sbin/servicecrondstop//Matikan perkhidmatan

/sbin/servicecrondrestart//Mulakan semula perkhidmatan

/sbin/servicecrondreload//Muat semula konfigurasi

Semak status perkhidmatan crontab:

servicecrondstatus

linux任务计划不生效_linux任务计划执行脚本_linux 计划任务没执行

Mulakan perkhidmatan crontab secara automatik:

servicecrondstart

Periksa sama ada perkhidmatan crontab telah ditetapkan untuk bermula semasa but, laksanakan arahan:

ntsysv

Tambahkan permulaan manual semasa but:

chkconfig–level35crondon

3. Tafsiran arahan crontab

1. Format arahan:

crontab[-user]fail

crontab[-user][-e|-l|-r]

2. Fungsi arahan:

Melalui arahan crontab, kami boleh melaksanakan perintah sistem atau skrip shellscript yang ditentukan pada selang masa tetap. Unit selang masa boleh menjadi minit, jam, hari, bulan, minggu atau mana-mana gabungan di atas. Perintah ini amat sesuai untuk analisis log berkala atau sandaran data.

3. Parameter arahan:

-pengguna: Digunakan untuk menetapkan perkhidmatan crontab pengguna tertentu Contohnya, "-uixdba" bermaksud menetapkan perkhidmatan crontab pengguna ixdba ini biasanya dijalankan oleh pengguna root.

fail: fail ialah nama fail arahan, yang bermaksud fail itu digunakan sebagai fail senarai tugas crontab dan dimuatkan ke dalam crontab. Jika fail ini tidak dinyatakan pada baris arahan, arahan crontab akan menerima arahan yang ditaip pada input standard (tetikus) dan memuatkannya ke dalam crontab.

-e: Edit kandungan fail crontab pengguna. Jika anda tidak menentukan pengguna, ini bermakna mengedit fail crontab pengguna semasa.

-l: Paparkan kandungan fail crontab pengguna tertentu Jika pengguna tidak dinyatakan, ia bermakna memaparkan kandungan fail crontab pengguna semasa.

-r: Padam fail crontab pengguna daripada direktori /var/spool/cron Jika tiada pengguna dinyatakan, fail crontab pengguna semasa akan dipadamkan secara lalai.

-i: Berikan gesaan pengesahan apabila memadam fail crontab pengguna.

4. Kaedah yang biasa digunakan:

1).Buat fail crontab baharu

Sebelum mempertimbangkan untuk menyerahkan fail crontab ke proses cron, perkara pertama yang perlu dilakukan ialah menetapkan EDITOR pembolehubah persekitaran. Proses cron menggunakannya untuk menentukan editor yang hendak digunakan untuk mengedit fail crontab. 99% pengguna UNIX dan LINUX menggunakan vi. Jika ini berlaku untuk anda, maka anda mengedit fail .profile dalam direktori $HOME Tugas berjadual Linux tidak dilaksanakan dan tambahkan baris ini padanya:

EDITOR=vi;eksportEDITOR

Simpan dan keluar selepas itu. Anda juga boleh membuat fail yang dipanggil cron, di mana nama pengguna, sebagai contoh, davecron. Tambahkan kandungan berikut pada fail ini.

#(putyourowinitialshere)echothedatetotheconsoleevery

#15minit antara 6 petang hingga 6 pagi

0,15,30,4518-06***/bin/echo'date'>/dev/console

Simpan dan keluar. Pastikan 5 medan seterusnya dipisahkan oleh ruang.

Dalam contoh sebelumnya, sistem akan mengeluarkan masa semasa ke konsol setiap 15 minit. Jika sistem ranap atau hang, anda boleh mengetahui sepintas lalu apabila sistem berhenti berfungsi dari kali terakhir dipaparkan. Dalam sesetengah sistem, tty1 digunakan untuk mewakili konsol, dan contoh di dalamnya boleh diubah dengan sewajarnya mengikut situasi sebenar. Untuk menyerahkan fail crontab yang baru anda buat, anda boleh menggunakan fail yang baru dibuat ini sebagai parameter arahan cron:

$crontabdavecron

Kini fail telah diserahkan kepada proses cron, yang akan dijalankan setiap 15 minit.

Pada masa yang sama, salinan fail yang baru dibuat telah diletakkan dalam direktori /var/spool/cron, dan nama fail ialah nama pengguna (iaitu dave).

2). Senaraikan fail crontab

Untuk menghitung fail crontab, anda boleh menggunakan:

$crontab-l

0,15,30,45,18-06***/bin/echo`date`>dev/tty1

Anda akan melihat kandungan yang serupa dengan yang sebelumnya. Anda boleh menggunakan kaedah ini untuk membuat sandaran fail crontab dalam direktori $HOME:

$crontab-l>$HOME/mycron

Dengan cara ini, sebaik sahaja fail crontab dipadamkan secara tidak sengaja, ia boleh dipulihkan dengan cepat menggunakan kaedah yang diterangkan dalam bahagian sebelumnya.

3).Edit fail crontab

Jika anda ingin menambah, memadam atau mengedit entri dalam fail crontab, dan pembolehubah persekitaran EDITOR ditetapkan kepada vi, anda boleh menggunakan vi untuk mengedit fail crontab Arahan yang sepadan ialah:

$crontab-e

Anda boleh menukar fail crontab dan keluar sama seperti anda akan mengedit mana-mana fail lain dengan vi. Jika entri individu ditukar atau entri baharu ditambah, cron akan melakukan semakan integriti yang diperlukan pada fail semasa menyimpannya. Jika nilai dalam salah satu medan melebihi julat yang dibenarkan, ia akan menggesa anda.

Apabila kami mengedit fail crontab, kami mungkin menambah entri baharu. Sebagai contoh, tambahkan yang berikut:

#DT:deletecorefiles,pada 3.30amon1,7,14,21,26,26harisetiap bulan

3031,7,14,21,26**/bin/cari-nama"core'-execrm{};

Simpan dan keluar sekarang. Adalah lebih baik untuk menambah ulasan pada setiap entri dalam fail crontab supaya anda mengetahui fungsinya, masa berjalan, dan yang lebih penting, tugas pengguna yang mana itu.

Sekarang mari kita gunakan arahan crontab-l yang disebutkan di atas untuk menyenaraikan semua maklumatnya:

$crontab-l

#(crondaveinstalledpadaSelasaMei413:07:431999)

#DT:echthedatetotheconsoleevery30minites

0,15,30,4518-06***/bin/echo`date`>/dev/tty1

#DT:deletecorefiles,pada 3.30amon1,7,14,21,26,26harisetiap bulan

3031,7,14,21,26**/bin/cari-nama"core'-execrm{};

4).Padam fail crontab

Untuk memadam fail crontab, anda boleh menggunakan:

$crontab-r

5). Pulihkan fail crontab yang hilang

Jika anda secara tidak sengaja memadamkan fail crontab, dengan mengandaikan anda mempunyai sandaran dalam direktori $HOME anda, anda boleh menyalinnya ke /var/spool/cron/, di manakah nama pengguna. Jika salinan tidak dapat dilengkapkan kerana masalah kebenaran, anda boleh menggunakan:

$crontab

Antaranya, ialah nama fail salinan anda dalam direktori $HOME.

Saya mengesyorkan anda menyimpan salinan fail ini dalam direktori $HOME anda. Saya mempunyai pengalaman yang sama dan memadam fail crontab beberapa kali (kerana kekunci r berada di sebelah kiri kekunci e). Inilah sebabnya mengapa sesetengah dokumentasi sistem mengesyorkan untuk tidak mengedit fail crontab secara langsung, tetapi untuk mengedit salinan fail dan kemudian menyerahkan semula fail baharu.

Sesetengah varian crontab agak pelik, jadi berhati-hati apabila menggunakan arahan crontab. Jika sebarang pilihan ditinggalkan, crontab boleh membuka fail kosong, atau kelihatan seperti fail kosong. Pada masa ini, tekan kekunci padam untuk keluar Jangan tekan, jika tidak, anda akan kehilangan fail crontab.

5. Contoh penggunaan

Contoh 1: Laksanakan arahan setiap 1 minit

Perintah:

*****perintah

Contoh 2: Pelaksanaan pada minit ke-3 dan ke-15 setiap jam

Perintah:

3,15****perintah

Instance 3: Dilaksanakan pada minit ke-3 dan ke-15 dari 8 malam hingga 11 malam

Perintah:

3,158-11***arahan

Contoh 4: Dilaksanakan pada minit ke-3 dan ke-15 dari 8 pagi hingga 11 pagi setiap tujuh hari

Perintah:

3,158-11*/2**arahan

Contoh 5: Dilaksanakan pada minit ke-3 dan ke-15 dari 8 pagi hingga 11 pagi setiap Isnin

Perintah:

3,158-11**1arahan

Contoh 6: Mulakan semula smb pada jam 21:30 malam

Perintah:

3021***/etc/init.d/smbrestart

Instance 7: Mulakan semula smb pada 4:45 pada 1, 10 dan 22 setiap bulan

Perintah:

4541,10,22**/etc/init.d/smbrestart

Contoh 8: Mulakan semula smb pada 1:10 setiap Sabtu dan Ahad

Perintah:

101**6,0/etc/init.d/smbrestart

Instance 9: Mulakan semula smb setiap 30 minit antara 18:00 dan 23:00 setiap malam

Perintah:

0,3018-23***/etc/init.d/smbrestart

Contoh 10: Mulakan semula smb pada pukul 11:00 malam setiap Sabtu

Perintah:

023**6/etc/init.d/smbrestart

Contoh 11: Mulakan semula smb setiap jam

Perintah:

**/1***/etc/init.d/smbrestart

Contoh 12: Mulakan semula smb setiap jam antara 11 pagi dan 7 malam

Perintah:

*23-7/1***/etc/init.d/smbrestart

Contoh 13: Mulakan semula smb pada 4hb setiap bulan dan pukul 11 ​​setiap Isnin hingga Jumaat

Perintah:

0114*mon-wed/etc/init.d/smbrestart

Contoh 14: Mulakan semula smb pada pukul 4 pada 1 Oktober

Perintah:

041jan*/etc/init.d/smbrestart

Contoh 15: Jalankan skrip dalam direktori /etc/cron.hourly setiap jam

Perintah:

01****rootrun-parts/etc/cron.hourly

Penerangan:

run-parts ialah parameter Jika anda mengalih keluar parameter ini, anda boleh menulis nama skrip untuk dijalankan dan bukannya nama direktori

4. Langkah berjaga-jaga untuk digunakan

1. Beri perhatian kepada pembolehubah persekitaran

Kadangkala kami mencipta crontab, dan tugas ini sukar dilakukan secara manual, tetapi tiada masalah untuk mengautomasikan tugasan ini biasanya disebabkan oleh pembolehubah persekitaran yang tidak dikonfigurasikan dalam fail crontab.

Apabila mentakrifkan berbilang tugas penjadualan dalam fail crontab, satu isu yang memerlukan perhatian yang besar ialah tetapan pembolehubah persekitaran Kerana apabila kita melaksanakan tugas secara automatik, ia dilakukan dalam persekitaran shell semasa Program ini sebenarnya boleh mencari pembolehubah persekitaran. dan Apabila sistem melakukan penjadualan tugas secara manual, ia tidak akan memuatkan sebarang pembolehubah persekitaran Untuk pengenalan kepada sistem pengendalian Linux ini, anda perlu menentukan semua pembolehubah persekitaran yang diperlukan untuk menjalankan tugasan dalam fail crontab tiada masalah apabila sistem melaksanakan penjadualan tugas.

Jangan anggap cron tahu keadaan istimewa yang diperlukan, nampaknya tidak. Oleh itu, anda perlu memastikan untuk menyediakan semua laluan yang diperlukan dan pembolehubah persekitaran dalam skrip shell, bukan hanya beberapa pembolehubah global yang ditetapkan secara manual. Oleh itu, perhatikan 3 perkara berikut:

1) Apabila laluan fail terlibat dalam skrip, tulis laluan global

2) Apabila pelaksanaan skrip memerlukan java atau pembolehubah persekitaran lain, perkenalkan pembolehubah persekitaran melalui arahan sumber, seperti:

catstart_cbp.sh

#!/bin/sh

sumber/etc/profile

exportRUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

/usr/local/jboss-4.0.5/bin/run.sh-cmev&

3) Apabila pelaksanaan automatik skrip OK, tetapi crontab tidak dilaksanakan. Pada masa ini, anda mesti mengesyaki dengan berani bahawa pembolehubah persekitaran harus dipersalahkan, dan anda boleh cuba memperkenalkan pembolehubah persekitaran secara langsung dalam crontab untuk menyelesaikan masalah. Seperti:

0****./etc/profile;/bin/sh/var/www/java/audit_no_count/bin/restart_audit.sh

2. Beri perhatian untuk mengosongkan log e-mel pengguna sistem

Selepas setiap tugasan dijadualkan untuk dilaksanakan, sistem akan menghantar maklumat output tugasan kepada pengguna sistem semasa melalui e-mel Lama kelamaan, maklumat log akan menjadi sangat besar, yang mungkin menjejaskan operasi normal sistem blog operasi dan penyelenggaraan linux akan Adalah sangat penting untuk mengubah hala setiap tugas.

Sebagai contoh, anda boleh menetapkan kaedah berikut dalam fail crontab untuk mengabaikan output log:

0*/3***/usr/local/apache2/apachectlrestart>/dev/null2>&1

"/dev/null2>&1" bermaksud terlebih dahulu mengubah hala keluaran standard ke /dev/null, dan kemudian mengubah hala ralat standard kepada output standard Kerana output standard telah diubah hala ke /dev/null, ralat standard juga akan diubah hala ke /dev/null supaya masalah keluaran log diselesaikan.

3. Penjadualan tugas peringkat sistem dan penjadualan tugas peringkat pengguna

Penjadualan tugas peringkat sistem terutamanya melengkapkan beberapa operasi penyelenggaraan sistem, dan penjadualan tugas peringkat pengguna terutamanya menyelesaikan beberapa tugas yang ditentukan pengguna Penjadualan tugas peringkat pengguna boleh diselesaikan dalam penjadualan tugas peringkat sistem (tidak disyorkan), dan sebaliknya sebaliknya. Tetapi tidak, operasi penjadualan tugas pengguna root boleh ditetapkan melalui "crontab-uroot-e", atau tugas penjadualan boleh ditulis terus ke fail /etc/crontab tentukan tugas untuk memulakan semula sistem dengan kerap, Tugasan mesti diletakkan dalam fail /etc/crontab, walaupun membuat tugasan untuk memulakan semula sistem secara kerap di bawah pengguna root juga tidak sah.

4. Hal-hal lain yang memerlukan perhatian

Cronjob yang baru dibuat tidak akan dilaksanakan serta-merta, ia akan mengambil masa sekurang-kurangnya 2 minit untuk dilaksanakan. Jika cron dimulakan semula, ia akan dilaksanakan serta-merta.

Apabila crontab tiba-tiba gagal, anda boleh mencuba /etc/init.d/crondrestart untuk menyelesaikan masalah. Atau semak log untuk melihat sama ada kerja dilaksanakan/laporkan ralat tail-f/var/log/cron.

Jangan sekali-kali menjalankan crontab-r secara rawak. Ia memadam fail Crontab pengguna daripada direktori Crontab (/var/spool/cron). Selepas memadam semua crontab pengguna ini, ia hilang.

% mempunyai makna istimewa dalam crontab, yang bermaksud putus baris. Jika anda ingin menggunakannya, anda mesti menggunakan kad bebas %. Contohnya, tarikh yang biasa digunakan '+%Y%m%d' tidak akan dilaksanakan dalam crontab dan harus digantikan dengan tarikh '+%Y%m%d '.

Penerangan baharu: Semak rekod log vim-f/var/log/cron, iaitu laluan log tugas terjadual vim, untuk menyemak sama ada tugas yang dijadualkan telah didayakan servicecrondstatus

Atas ialah kandungan terperinci Penjadualan tugas di bawah Linux dibahagikan kepada dua jenis perkhidmatan crontab pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:itcool.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam