- Kaip veikia „crond“ demonas ir kaip užduotys tvarkomos naudojant „crontab“ failą.
- Detali sintaksė ir specialiųjų simbolių naudojimas tiksliam vykdymui programuoti.
- Atsarginių kopijų scenarijų su TAR įdiegimas ir sistemos priežiūros automatizavimas.
- Šiuolaikinės alternatyvos, tokios kaip sisteminiai laikmačiai ir grafiniai procesų valdymo įrankiai.
Nesvarbu, ar neseniai perėjote prie „Linux“, ar jau kurį laiką valdote savo serverį, tikriausiai supratote, kad kai kurias užduotis atlikti rankiniu būdu yra tikras vargas. Nuo laikinų failų valymo iki duomenų saugumo užtikrinimo naudojant atsargines kopijas – šių procesų automatizavimas yra labai svarbus norint išvengti nusivylimo ir užkirsti kelią paprastos klaidos, kuri sunaikintų mėnesio darbą.
Šiai problemai išspręsti UNIX tipo sistemos turi legendinį įrankį, vadinamą „Cron“. Iš esmės tai tarsi komandų žadintuvas , kuris paleidžia scenarijus ar programas tiksliai jūsų nurodytu laiku, veikdamas fone, kol geriate kavą arba visiškai pamirštate apie užduoties egzistavimą.
Kas tiksliai yra „Cron“ ir kaip jis juda?
Kalbėdami apie „Cron“, iš tikrųjų turime omenyje demoną, vadinamą „crond“ . „Linux“ pasaulyje demonas yra tiesiog procesas, kuris veikia fone be vartotojo sąsajos nuo sistemos paleidimo momento. Jo darbas yra monotoniškas, bet gyvybiškai svarbus: kiekvieną minutę jis tikrina konfigūracijos failus, kad pamatytų, ar yra suplanuotų „cron“ užduočių, kurios atitiktų dabartinį laiką ir datą.
Kad viskas vyktų sklandžiai, labai svarbu tinkamai nustatyti sistemos laikrodį. Jei laikas arba laiko juosta neteisingi, atsarginės kopijos bus kuriamos netinkamu laiku. Todėl rekomenduojama naudoti komandą „timedatectl“ , kad patikrintumėte, ar sinchronizavimas su NTP serveriais yra teisingas, ir užtikrintumėte, kad sistemoje nėra jokių laiko neatitikimų.
„Crontab“ failas: kur vyksta magija
Jei „Cron“ yra variklis, „ crontab“ yra instrukcijų žemėlapis . Tai tekstinis failas, kuriame užrašome, ką ir kada norime paleisti. Įdomu tai, kad nėra tik vieno failo; sistema turi visuotinį „crontab“ failą adresu /etc/crontab, bet kiekvienas vartotojas gali turėti savo , todėl skirtingi žmonės gali planuoti savo užduotis nereikalaudami nuolatinių administratoriaus teisių.
Šioms užduotims valdyti naudojame komandą `crontab -e` redagavimui, `crontab -l` aktyvių failų sąrašui pateikti ir `crontab -r`, jei norime viską ištrinti ir pradėti nuo nulio. Tai labai aiškus būdas organizuoti sistemos priežiūrą neliečiant svarbių branduolio failų.
Cron sintaksės analizė
Norėdami suplanuoti užduotį, turite laikytis labai griežtos penkių laiko laukų tvarkos, po kurios eina komanda. Seka yra: minutė, valanda, mėnesio diena, mėnuo ir savaitės diena . Pavyzdžiui, jei įvesime 0 19 * * 0, nurodome sistemai aktyvuoti kiekvieną sekmadienį 7 val.
Kad mūsų gyvenimas būtų lengvesnis, yra specialieji personažai kurie suteikia mums visišką kontrolę. Žvaigždutė (*) reiškia „visada“ arba „bet kokia reikšmė“, o pasvirasis brūkšnys (/) naudojamas intervalams apibrėžti, pvz. */10 paleisti ką nors kas dešimt minučių. Brūkšnelis (-) apibrėžia diapazonus, o kablelis (,) leidžia nurodyti konkrečias reikšmes. Be to, yra iš anksto nustatyti spartieji klavišai pvz., @daily, @weekly arba @reboot, kurie supaprastina rašymą dažniausiai pasitaikančiais atvejais.
Pirmosios atsarginės sistemos kūrimas
Viena naudingiausių programų yra duomenų atsarginių kopijų kūrimas. Tam idealus pasirinkimas yra TAR įrankis . Galime sukurti „Bash“ skriptą, kuris supakuoja mūsų failus, priskiria dabartinę datą failo pavadinimui ir, svarbiausia, pašalina nereikalingus aplankus, pvz., talpyklą ar šiukšliadėžę, kad atsarginė kopija netaptų gigabaitais nereikalingos informacijos.
Kai scenarijus sukurtas (pavyzdžiui, aplanke /usr/local/bin/mybackup) ir vykdymo teisės suteiktos naudojant komandą „chmod +x“ , tiesiog pridėkite eilutę prie šakninio „crontab“. Tokiu būdu serveris automatiškai atliks atsarginę kopiją, o jūs netgi galite suplanuoti scenarijų taip, kad jis automatiškai ištrintų senesnes nei dviejų savaičių atsargines kopijas, kad neužpildytų standžiojo disko.
Išplėstinis administravimas ir absoliutūs keliai
Labai dažna pradedančiųjų klaida – santykinių kelių naudojimas scenarijuose. „Cron“ veikia labai ribotoje aplinkoje ir nežino jūsų vietos, todėl visada turėtumėte naudoti absoliučius kelius (pvz., /home/user/script.sh, o ne ./script.sh). Priešingu atveju komanda tyliai nepavyks įvykdyti, o kai reikės atkurti duomenis, jūsų laukia nemaloni staigmena.
Norint išvengti aklo įėjimo, labai svarbu nukreipti išvestį į žurnalusNaudojant operatorių >>> /var/log/backup.log 2>&1Galime išsaugoti ir sėkmes, ir nesėkmes faile. Tokiu būdu, jei kas nors nutiktų ne taip, mums tereikėtų peržiūrėti žurnalo failą, kad tiksliai žinotume, kas nutiko, ir nereikėtų spėlioti.
Poveikis našumui ir geriausia praktika
Nerekomenduojama perkrauti sistemos užduotimis, kurios vykdomos kas sekundę, nes tai gali sukelti procesoriaus ir RAM naudojimo šuolius . Protingiausias būdas yra planuoti daug išteklių reikalaujančius procesus, pvz., duomenų bazių atnaujinimus ar dideles atsargines kopijas, ankstyvomis ryto valandomis arba ne piko metu, kad nebūtų paveiktas vartotojas.
Norint išvengti vienos užduoties persidengimo su kita, jei pirmoji užtrunka ilgiau nei tikėtasi, rekomenduojama naudoti „flock“ , kuris neleidžia vienu metu vykdyti to paties scenarijaus. Be to, norėdamas apriboti, kas gali naudoti „Cron“, administratorius gali sukonfigūruoti failus „cron.allow“ ir „cron.deny“ , užtikrindamas, kad tik įgalioti darbuotojai galėtų planuoti užduotis serveryje.
Šiuolaikinės alternatyvos: „Systemd“ laikmačiai ir kita
Nors „Cron“ yra klasikinis įrankis, šiuolaikinės sistemos naudoja „systemd“ laikmačius . Jie yra daug galingesni, nes leidžia valdyti priklausomybes, efektyviau tvarkyti klaidas ir vykdyti užduotis pagal sistemos įvykius (pvz., paleidimą), o ne tik laikrodį. Jie konfigūruojami naudojant .timer ir .service failus, esančius /etc/systemd/system/.
Tiems, kuriems nepatogu naudotis terminalu, yra grafinių parinkčių, tokių kaip „KCron“ (skirta KDE), arba žiniatinklio įrankių, tokių kaip „Webmin“. Kitose operacinėse sistemose, tokiose kaip „macOS“, naudojama „launchd“ , kuri siūlo daug gilesnę integraciją su „Apple“ ekosistema ir leidžia automatiškai paleisti iš naujo nepavykusias užduotis.
Kiti realaus pasaulio naudojimo atvejai serveriuose
Be atsarginių kopijų kūrimo, „Cron“ yra puikus įrankis sistemos švarai palaikyti . Galite suplanuoti užduotis, kad kas savaitę būtų ištrinti seni žurnalai arba paleista iš naujo paslaugos, kurios linkusios strigti. Tai taip pat svarbu duomenų sinchronizavimui naudojant „rsync“ tarp skirtingų mašinų, užtikrinant, kad informacija būtų atkartojama be žmogaus įsikišimo.
Žiniatinklio aplinkoje jis nuolat naudojamas masiniams el. laiškams siųsti , kasdienėms pardavimo ataskaitoms generuoti arba puslapio talpyklai atnaujinti. Iš esmės bet koks pasikartojantis ir nuspėjamas veiksmas gali ir turėtų būti deleguotas „Cron“, siekiant optimizuoti administratoriaus produktyvumą.
Įvaldę automatizavimą „Linux“ sistemoje, rankiniu būdu valdomą serverį galite paversti autonominiu ir efektyviu įrenginiu. Derindami „Bash“ scenarijų naudojimą, „crontab“ tikslumą ir žurnalų stebėjimą, galite užtikrinti, kad priežiūra, saugumas ir duomenų vientisumas būtų tvarkomi automatiškai, taip sutaupant laiko ir smarkiai sumažinant žmogiškųjų klaidų tikimybę infrastruktūros valdyme.



