Š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:
- Žvaigždutė (*): Norėdami nurodyti visas galimas lauko reikšmes
- Brūkšnys (-): Į s nustatyti įvairias vertybes
- Kablelis (,): Norėdami nurodyti verčių sąrašą
- 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-IrPavyzdž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> -IrPavyzdž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ą/scenarijusKasdien 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ą/scenarijusAtlikite „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ą/scenarijusAtlikite „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ą/scenarijusKiekvieną 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ą/scenarijusAtlikite „cron“ darbą kas 5 valandas
Norėdami suplanuoti „cron“ darbą kas 5 valandas, pridėkite žemiau esančią eilutę „crontab“ faile:
0 * /5 * * *komandą/scenarijusAtlikite „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:
- @valandas: Atlikti darbą kartą per valandą, t. 0 * * * *
- @vidurnaktis: Atlikti darbą vieną kartą per dieną, t. 0 0 * * *
- @kasdien: toks pat kaip vidurnaktis
- @savaitė: Atlikti darbą kartą per savaitę, t. 0 0 * * 0
- @mėnuo: Atlikti darbą kartą per mėnesį, t. 0 0 1 * *
- @kasmet: Atlikti darbą kartą per metus, t. 0 0 1 1 *
- @metai: toks pat kaip ir @kasmet
- @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/scenarijusIš 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-jiePerž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/crontabTurė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> -jieNorė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.valandosPerž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.txtVisų 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.