|
Lucaine nai-publish kanina mahusay na tutorial sa cron at crontab na sa tingin ko ay sulit na ibahagi. Ang Cron ay isang uri ng katumbas ng Nakaiskedyul na Mga Gawain sa Windows, tanging iyon lang ang hinahawakan mula sa terminal. Ang mga mas gusto ang isang visual interface upang makamit ang parehong layunin, makikita ito isa pang artikulo. |
Ano ang cron?
Ang pangalang cron ay nagmula sa Greek kronos na nangangahulugang "oras". Sa operating system ng Unix, ang cron ay isang regular na tagapamahala ng proseso ng background (daemon) na nagpapatakbo ng mga proseso o script sa mga regular na agwat (halimbawa, bawat minuto, araw, linggo, o buwan). Ang mga proseso na dapat ipatupad at ang oras kung saan dapat silang isagawa ay tinukoy sa crontab file.
Como funciona
Ang cron daemon ay nagsisimula sa /etc/rc.d/ o /etc/init.d depende sa pamamahagi. Tumatakbo ang Cron sa background, sinusuri ang talahanayan ng gawain ng crontab bawat minuto / etc / crontab o en / var / spool / cron sa paghahanap ng mga gawain na naisasagawa. Bilang isang gumagamit maaari kaming magdagdag ng mga utos o script na may mga gawain upang i-automate ang ilang mga proseso. Kapaki-pakinabang ito halimbawa upang i-automate ang pag-update ng isang system o isang mahusay na backup system.
Ano ang Crontab?
Ang Crontab ay isang simpleng file ng teksto na nag-iimbak ng isang listahan ng mga utos na naisakatuparan sa isang oras na tinukoy ng gumagamit. Susuriin ng Crontab ang petsa at oras kung kailan dapat isagawa ang script o utos, ang mga pahintulot sa pagpapatupad at gagawin ito sa likuran. Ang bawat gumagamit ay maaaring magkaroon ng kanilang sariling crontab file, sa katunayan ang / etc / crontab ipinapalagay na crontab file ng root ng gumagamit, kapag ang mga normal na gumagamit (at kahit na ang ugat) ay nais na bumuo ng kanilang sariling crontab file pagkatapos ay gagamitin namin ang crontab command.
Ang Crontab ay ang pinakamadaling paraan upang pamahalaan ang mga gawain sa cron sa mga multi-user system, alinman bilang isang simpleng gumagamit ng system o root user.
Paggamit ng crontab
Nagsisimula kami sa isang simpleng halimbawa.
Isasaayos namin ang pag-update ng isang system, upang maalis ang nakakainis na "Palagi kong kailangang mag-update at hindi ko gusto iyon!
Una sa lahat gagawa kami ng isang script. Ang script na ito ay tatawagin ng cron at maglalaman ng lahat ng mga tagubiling nais naming gawin, samakatuwid kinakailangan na subukan ito sa maraming mga kaso at sa maraming paraan bago isama ito sa cron, isang simpleng script sa pag-update na tulad nito:
#! / bin / bash #script update halimbawa #piliin ang iyong pamamahagi # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Alisin ang # mula sa iyong distro line. Kung sakaling ito ay Ubuntu / Debian, nagsisimula ito sa apt-get.
Nai-save namin ang script bilang update.sh (hal. Direktoryo ng mga script ang iyong tahanan). Binabago namin ang mga pahintulot sa pagpapatupad ng nasabing script sa:
chmod a + x ~ / script / update.sh
Isinasagawa namin ang script ng maraming beses upang ma-verify na ang lahat ay tumatakbo nang maayos, binabago namin kung ano ang kinakailangan (hindi ito dapat maglaman ng mga error, kung hindi man ay uulit-ulitin lamang ng cron ang isang error nang paulit-ulit). Ngayon upang idagdag ang gawain sa aming crontab.
Magdagdag ng mga gawain sa crontab
Isinasagawa namin ang edisyon ng crontab na may crontab -e, sa ilang mga distrito (tulad ng ubuntu) binibigyan nito kami ng pagpipilian upang piliin ang text editor na gusto namin, ang natitira ay naiwan sa amin ng vi. Ang crontab file ay magmumukhang ganito.
# mh dom mon dow utos ng gumagamit
kung saan:
- m tumutugma sa minutong ang script ay naisakatuparan, ang halaga ay umaabot mula 0 hanggang 59
- h ang eksaktong oras, ang 24-oras na format ay hawakan, ang mga halaga ay umaabot mula 0 hanggang 23, na ang 0 ay nasa alas-12 ng hatinggabi.
- regalo tumutukoy sa araw ng buwan, halimbawa maaari mong tukuyin ang 15 kung nais mong tumakbo tuwing 15 araw
- dow nangangahulugang ang araw ng linggo, maaari itong maging bilang (0 hanggang 7, kung saan ang 0 at 7 ay Linggo) o ang unang 3 mga titik ng araw sa Ingles: mon, tue, wed, thu, pray, sat, sun.
- gumagamit tinutukoy ang gumagamit na magpapatupad ng utos, maaari itong maging ugat, o ibang gumagamit basta mayroon silang mga pahintulot na ipatupad ang script.
- utos tumutukoy sa utos o sa ganap na landas ng script na naisasagawa, halimbawa: /home/usuario/scripts/update.sh, kung tumatawag ito ng isang script dapat itong maipatupad
Upang maging malinaw ang ilang mga halimbawa ng mga gawain sa cron na ipinaliwanag:
15 10 * * * user /home/user/scripts/update.sh
Patakbuhin nito ang update.sh script nang 10:15 am araw-araw
15 22 * * * user /home/user/scripts/update.sh
Patakbuhin nito ang update.sh script sa 10:15 pm araw-araw
00 10 * * 0 root apt-get -y i-update ang Root user
Magpapatakbo ito ng pag-update tuwing Linggo ng 10:00 ng umaga
45 10 * * root sun apt-get -y update
Ang Root user ay magpapatakbo ng isang pag-update tuwing Linggo (Araw) ng 10:45 ng umaga
30 7 20 11 * gumagamit / home /usuario/scripts/update.sh
Sa Nobyembre 20 ng 7:30 tatakbo ang gumagamit ng script
30 7 11 11 sun user /home/usuario/scripts/pastel_con_velitas.sh
Sa Nobyembre 11 ng 7:30 ng umaga at iyon ay Linggo, ipagdiriwang ng gumagamit ang kanyang sysadmin (iyon ay, ako)
01 * * * * gumagamit / home /usuario/scripts/molestorecordatorio.sh
Isang nakakainis na paalala bawat minuto ng bawat oras araw-araw (HINDI inirerekomenda).
Maaari pa silang hawakan mga espesyal na saklaw:
30 17 * * 1,2,3,4,5
Sa 5:30 ng hapon araw-araw mula Lunes hanggang Biyernes.
00 12 1,15,28 **
Sa alas-12 ng tanghali sa una, ikalabinlim at ika-28 ng bawat buwan (mainam para sa payroll)
Kung nakalilito ito, humahawak ang crontab mga espesyal na string upang tukuyin ang mga saklaw na ito.
@reboot Patakbuhin nang isang beses, sa pagsisimula
Tumatakbo lamang si @yearly isang beses sa isang taon: 0 0 1 1 *
@manwal na kapareho ng @ taon
@monthly tumatakbo isang beses sa isang buwan, ang unang araw: 0 0 1 * *
@weekly Lingguhan ang unang minuto ng unang oras ng linggo. 0 0 * * 0 ″.
@ araw-araw araw-araw, sa 12:00 A.M. 0 0 * * *
@midnight parehas ng @daily
@ oras sa unang minuto ng bawat oras: 0 * * * *
Napakadali ng paggamit nito.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Huling ngunit hindi huli:
Pamamahala sa trabaho sa Cron
file ng crontab
Palitan ang umiiral na crontab file ng isang file na tinukoy ng gumagamit
crontab -e
I-edit ang crontab file ng gumagamit, ang bawat bagong linya ay magiging isang bagong gawain sa crontab.
crontab -l
Ilista ang lahat ng mga gawain sa crontab ng gumagamit
crontab -d
Tanggalin ang crontab ng gumagamit
crontab -c dir
Tinutukoy ang direktoryo ng crontab ng gumagamit (dapat itong may sulat ng gumagamit at magpatupad ng mga pahintulot)
crontab -u gumagamit
awalan upang hawakan ang crontab ng ibang gumagamit, mga halimbawa:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user
Ang tool na ito, tulad ng marami pang iba, ay maaaring makita nang mas malalim at mas detalyado sa: