„Cron Jobs“: užpildykite pradedantiesiems skirtą pamoką

Cron Jobs Complete Beginners Tutorial



„Cron“ yra naudingiausia „Linux“ ar „UNIX“ tipo operacinės sistemos priemonė, leidžianti paleisti komandas ar scenarijus pagal nurodytą tvarkaraštį be vartotojo įsikišimo. Suplanuotos komandos ir scenarijai taip pat vadinami „cron“ užduotimis. Dažniausiai jis naudojamas automatizuoti pasikartojančias užduotis, pvz., Paleisti suplanuotas atsargines kopijas, išvalyti laikinus failus, sistemos priežiūrą ir įvairias kitas pasikartojančias užduotis. Tai panaši į užduočių planavimo priemonę „Windows“ OS.

Šioje pamokoje mes pateiksime jums pagrindinį įvadą į viską, ko reikia norint suplanuoti darbą su cron. Tai apima pagrindinę „cron“ sintaksę, „crontab“ failo redagavimą, darbo su „cron“ suplanavimą su keliais pavyzdžiais, „cron“ užduoties peržiūrą ir kt.







Crono darbo pagrindai

Supraskime kai kuriuos „cron“ darbo pagrindus.



Kas yra Krondas?

„Crond“ yra „Linux“ sistemos demonas, veikiantis fone ir kiekvieną minutę tikrinantis, ar tuo metu yra numatytas koks nors darbas. Jei yra, jis atlieka tą darbą, kitu atveju jis lieka neaktyvus.



„Cron Job“ sintaksė

„Cron“ darbo sintaksė yra tokia:





* * * * *komandą/scenarijus

Iš kairės:

  • Pirmasis * atitinka protokolą (0–59)
  • Antrasis * atitinka valandas (0–23)
  • Trečiasis * atitinka mėnesio dieną (1-31)
  • Ketvirtasis * atitinka metų mėnesį (1–12)
  • Penktasis * atitinka savaitės dieną (nuo 0 iki 6, nuo sekmadienio iki šeštadienio)

Norėdami lauke nurodyti kelias reikšmes, naudokite šiuos operatoriaus simbolius:



  1. Žvaigždutė (*): Norėdami nurodyti visas galimas lauko reikšmes
  2. Brūkšnys (-): Į s nustatyti įvairias vertybes
  3. Kablelis (,): Norėdami nurodyti verčių sąrašą
  4. Skirstytuvas (/): Norėdami nurodyti žingsnio vertę

„Crontab“ failo redagavimas

„Crontab“ yra failas, kuriame yra suplanuotų užduočių tam tikroje sintaksėje. Yra dviejų tipų „crontab“ failai; vienas skirtas sistemos cron užduotims, o kitas-konkrečiam vartotojui skirtas cron užduotis.

System cron darbai

Visos sistemos „cron“ užduotys yra /etc/crontab failą ir /etc/cron.d katalogas, ir jie paleidžiami /etc/cron.hourly , /etc/cron.daily , /etc/cron.sav ir /etc/cron.monthly. Šiuos failus gali pasiekti tik sistemos administratorius.

Sistemos administratorius gali apibrėžti „cron“ užduotį naudodami šią komandą:

$nano /ir kt/crontab

Čia yra darbo sintaksė /etc/crontab failas:

# min hr dayofmonth month dayofweek vartotojo vardo komanda
* * * * *vartotojas1ifconfig

Vartotojui skirtos „cron“ užduotys

Vartotojui skirtos „cron“ užduotys yra / var / spool / cron / crontabs katalogą. Nors šias užduotis galite redaguoti rankiniu būdu, rekomenduojama jas redaguoti naudojant komandą crontab -e.

Standartinis vartotojas gali apibrėžti „cron“ užduotį naudodami šią komandą:

$crontab-Ir

Pavyzdžiui, jei esate prisijungę kaip bandomasis vartotojas, paleisdami komandą „crontab -e“ redaguosite bandomojo vartotojo „crontab“ failą. Panašiai, jei esate prisijungę kaip root vartotojas, komanda crontab -e redaguos pagrindinio vartotojo crontab failą.

Išleiskite žemiau esančią komandą terminale, kad galėtumėte redaguoti bet kurio kito vartotojo „crontab“ failą:

$sudocrontab-u <Vartotojo vardas> -Ir

Pavyzdžiui, jei esate prisijungę kaip test1 vartotojas ir norite redaguoti test2 vartotojo crontab failą, komanda būtų tokia:

$sudocrontab-utestas2-Ir

Štai cron užduoties sintaksė, kurią galima pridėti į crontab failą:

# m h dayofmonth month dayofweek komanda
* * * * * ifconfig

Konkretaus vartotojo užduotyse galite matyti, kad nėra įvestas vartotojo vardas.

„Crontab“ komandos

„Crontab“ komanda naudojama redaguoti, išvardyti ir pašalinti „cron“ užduotis:

  • crontab -e Norėdami redaguoti dabartinio vartotojo „crontab“ failą
  • crontab -l Norėdami parodyti „crontab“ failo turinį
  • crontab -u [vartotojo vardas] Norėdami redaguoti bet kurio kito vartotojo „crontab“ failą
  • crontab -r Norėdami pašalinti dabartinio vartotojo crontab failą
  • crontab -i Norėdami parodyti raginimą prieš pašalindami dabartinio vartotojo „crontab“ failą

Darbo planavimas su Cron

Naudodami „Cron“, galite vykdyti užduotį tam tikru laiku, data ir intervalais su minimaliu vienetu per minutes, t.y., galite atlikti darbą kiekvieną minutę.

Norėdami suplanuoti darbą su „cron“, atidarykite „crontab“ failą naudodami ankstesniame skyriuje aptartą metodą. Kai atidarysite „crontab“ failą, būsite paraginti pasirinkti teksto rengyklę. Įveskite skaičių, kad pasirinktumėte pageidaujamą teksto rengyklę. Slinkite žemyn iki failo apačios ir pridėkite darbų pagal aukščiau aprašytą sintaksę. Kiekviena failo eilutė nurodo vieną komandą. Pirmieji penki eilutės įrašai nurodo suplanuotą laiką, o paskutinis įrašas nurodo, kuri komanda ar scenarijus turėtų būti vykdomas.

Pavyzdys:

Toje eilutėje „crontab“ faile bus suplanuotas, kad „cron“ darbas paleis komandą/scenarijų kiekvieną 30-tą minutę po 5 valandų kiekvieną savaitės dieną nuo pirmadienio iki šeštadienio.

* /30 5 * * 1-6komandą/scenarijus

Minutės

Šiame lauke nurodome minutes, kai norime, kad komanda būtų vykdoma. Nurodoma nuo 0 iki 59. Šiame lauke * reiškia, kad darbas vykdomas kiekvieną minutę. Aukščiau esančioje „crontab“ eilutėje */30 nurodo „cron“ užduotį paleisti nurodytą komandą/scenarijų kas 30 minučių.

Valandos

Šiame lauke nurodome valandas, kada norime, kad komanda būtų vykdoma. Nurodoma nuo 0 iki 23. Šiame lauke * reiškia, kad darbas vykdomas kas valandą. Aukščiau esančioje „crontab“ eilutėje vertė 5 nurodo „cron“ užduotį paleisti nurodytą komandą/scenarijų kas penkias valandas.

Mėnesio diena

Šiame lauke nurodome konkrečias mėnesių dienas, kai norime, kad komanda būtų vykdoma. Jis nurodomas nuo 1 iki 31. Šiame lauke * reiškia kiekvieną dieną. Aukščiau esančioje „crontab“ eilutėje * nurodo „cron“ užduotį vykdyti nurodytą komandą/scenarijų kiekvieną dieną.

Metų mėnesis

Šiame lauke nurodome konkrečius mėnesius, kai norime, kad komanda būtų vykdoma. Jis nurodomas nuo 1 iki 12. Šiame lauke * reiškia kiekvieną mėnesį. Aukščiau esančioje „crontab“ eilutėje * nurodomas „cron“ darbas kiekvieną mėnesį paleisti nurodytą komandą/scenarijų.

Savaitės diena

Šiame lauke nurodome konkrečias savaitės dienas, kai norime, kad komanda būtų vykdoma. Jis nurodomas nuo 0 iki 6 nuo sekmadienio iki šeštadienio (0 sekmadienį ir 6 šeštadienį). * Šioje srityje reiškia kiekvieną dieną per savaitę. Aukščiau esančioje „crontab“ eilutėje * nurodomas „cron“ darbas paleisti nurodytą komandą/scenarijų kiekvieną savaitę.

„Cron Jobs“ pavyzdžiai

Štai keli „cron“ darbų pavyzdžiai:

Atlikite „cron“ darbą kas 15 minučių

Norėdami suplanuoti, kad „cron“ užduotis būtų vykdoma kas 15 minučių, pridėkite žemiau esančią eilutę „crontab“ faile:

* /penkiolika * * * *komandą/scenarijus

Kasdien 5 val. Atlikite „cron“ darbą

Norėdami suplanuoti, kad „cron“ darbas būtų vykdomas kiekvieną dieną 5 val., Pridėkite žemiau esančią eilutę „crontab“ faile:

0 5 * * *komandą/scenarijus

Atlikite „cron“ darbą kiekvieną dieną 17 val

Norėdami suplanuoti, kad „cron“ darbas būtų vykdomas kiekvieną dieną 17 val., Pridėkite žemiau esančią eilutę „crontab“ faile:

0 17 * * *komandą/scenarijus

Atlikite „cron“ darbą kiekvieno mėnesio pirmą dieną 9 val

Norėdami suplanuoti, kad „cron“ užduotis būtų vykdoma kiekvieno mėnesio pirmą dieną 9 val., Pridėkite žemiau esančią eilutę „crontab“ faile:

0 9 1 * *komandą/scenarijus

Kiekvieną kovo 15 d. Kas valandą atlikite „cron“ darbą

Norėdami suplanuoti „cron“ darbą kas valandą kiekvieną kovo 15 d., Pridėkite žemiau esančią eilutę „crontab“ faile:

0 * penkiolika 3 *komandą/scenarijus

Atlikite „cron“ darbą kas 5 valandas

Norėdami suplanuoti „cron“ darbą kas 5 valandas, pridėkite žemiau esančią eilutę „crontab“ faile:

0 * /5 * * *komandą/scenarijus

Atlikite „cron“ darbą kas 15 minučių

Norėdami suplanuoti, kad „cron“ užduotis būtų vykdoma kas 15 minučių, pridėkite žemiau esančią eilutę „crontab“ faile:

* /penkiolika * * * *

Naudojant eilutes

Darbui apibrėžti taip pat gali būti naudojamos šios eilutės:

  1. @valandas: Atlikti darbą kartą per valandą, t. 0 * * * *
  2. @vidurnaktis: Atlikti darbą vieną kartą per dieną, t. 0 0 * * *
  3. @kasdien: toks pat kaip vidurnaktis
  4. @savaitė: Atlikti darbą kartą per savaitę, t. 0 0 * * 0
  5. @mėnuo: Atlikti darbą kartą per mėnesį, t. 0 0 1 * *
  6. @kasmet: Atlikti darbą kartą per metus, t. 0 0 1 1 *
  7. @metai: toks pat kaip ir @kasmet
  8. @perkrauti: Atlikti užduotį vieną kartą kiekvieną kartą paleidžiant

Pavyzdžiui, norint paleisti scenarijų ar komandą kiekvieną savaitę, „crontab“ failo įrašas būtų toks:

@savaitės komanda/scenarijus

Iš anksto nustatyti „Cron“ katalogai

„Linux“ yra keletas iš anksto nustatytų „cron“ katalogų, kuriuose saugomi scenarijai automatiškai vykdomi. Jei į šiuos katalogus įdėsime kokį nors scenarijų, jis bus automatiškai vykdomas sukonfigūruotu laiku.

  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.sav

Pavyzdžiui, norėdami vykdyti scenarijų kartą per mėnesį, turėsite jį įdėti į /etc/cron.monthly.

Peržiūrėkite „Cron Jobs“

Peržiūrėkite dabartinio vartotojo užduotis

Norėdami peržiūrėti visas dabartinio vartotojo suplanuotas „cron“ užduotis, naudokite šią komandą:

$crontab-jie

Peržiūrėkite root vartotojų užduotis

Norėdami peržiūrėti visas suplanuoto pagrindinio vartotojo užduotis, terminale paleiskite šią komandą:

$katė /ir kt/crontab

Turėsite prisijungti kaip root vartotojas arba paleisti komandą kaip sudo.

Peržiūrėkite kitų vartotojų užduotis

Norėdami peržiūrėti visas suplanuotas konkretaus vartotojo užduotis, terminale paleiskite šią komandą, pakeisdami faktiniu vartotojo vardu:

$sudocrontab-u <Vartotojo vardas> -jie

Norėdami paleisti šią komandą, jums reikės sudo privilegijų.

Peržiūrėkite valandines „cron“ užduotis

Norėdami peržiūrėti visas „cron“ užduotis, kurios sukonfigūruotos vykdyti kas valandą, terminale paleiskite šią komandą:

$ls -jie /ir kt/cron.valandos

Peržiūrėkite kasdienes „cron“ užduotis

Norėdami peržiūrėti visas „cron“ užduotis, kurios sukonfigūruotos vykdyti kasdien, terminale paleiskite šią komandą:

$ls -jie /ir kt/cron.dienos/

Peržiūrėkite savaitės „cron“ darbus

Norėdami peržiūrėti visas „cron“ užduotis, kurios sukonfigūruotos vykdyti kas savaitę, terminale paleiskite šią komandą:

$ls -jie /ir kt/cron.savaitę/

Peržiūrėkite mėnesio „cron“ darbus

Norėdami peržiūrėti visas „cron“ užduotis, kurios sukonfigūruotos vykdyti kas mėnesį, terminale paleiskite šią komandą:

$ls -jie /ir kt/per mėnesį. kas mėnesį/

Sukurkite visų „Cron“ darbų atsarginę kopiją

Rekomenduojama išsaugoti visų failo „cron“ atsarginių kopijų atsarginę kopiją, kad galėtumėte jas atkurti ištrynus. Norėdami sukurti visų esamų darbų atsarginę kopiją, naudokite peradresavimo operatorių, kad nukreiptumėte „crontab -l“ išvestį į failą.

$crontab-jie >backup_cron.txt

Visų suplanuotų „Cron“ darbų pašalinimas

Norėdami pašalinti visas suplanuotas „cron“ užduotis, naudokite vėliavą -r taip:

$crontab-r

„Cron“ leidimas

Galime apriboti prieigą prie „crontab“ komandos per du failus: / etc/cron.allow ir/etc/cron.deny.

  • /etc/cron.allow - Pridėkite vartotojų (po vieną kiekvienoje eilutėje), kuriems norite leisti pasiekti „crontab“ komandas. Šie vartotojai gali vykdyti tvarkaraščio užduotis.
  • /etc/cron.deny - Pridėkite vartotojų (po vieną kiekvienoje eilutėje), kuriems norite neleisti pasiekti „crontab“ komandų. Šie vartotojai negali vykdyti suplanuotų darbų.

„Crontab“ sintaksės generatoriai

Yra keletas svetainių, leidžiančių generuoti „crontabs“ sintaksę. Šiose svetainėse lengviau generuoti „crontab“ išraišką, neprisimenant sintaksės. Nors yra įvairių svetainių, skirtų sintaksės generatoriams, pvz crontabgenerator.com , crontab-generator.org , ir cronmaker.com . Man labiausiai patinka ir man pasirodė naudinga crontab.guru . Remiantis vartotojo įvestimi, ji sukuria „crontab“ išraišką, kurią galite nukopijuoti ir įklijuoti į „crontab“ failą.

Išvada

Šioje pamokoje mes paaiškinome „cron“ užduočių pagrindus, jų sintaksę ir kaip ją nustatyti. Mes taip pat aptarėme, kaip peržiūrėti „cron“ užduotis, sukurti atsarginę kopiją ir jas pašalinti, jei jų nebereikia.