- Kuidas crond-deemon töötab ja kuidas ülesandeid crontab-faili abil hallatakse.
- Täpse teostuse programmeerimiseks detailne süntaks ja erimärkide kasutamine.
- Varundusskriptide rakendamine TAR-iga ja süsteemihoolduse automatiseerimine.
- Kaasaegsed alternatiivid, näiteks süsteemitud taimerid ja graafilised tööriistad protsesside haldamiseks.
Olenemata sellest, kas olete hiljuti Linuxile üle läinud või olete juba mõnda aega oma serverit ise haldanud, olete ilmselt märganud, et mõned ülesanded on käsitsi tegemine tõeline tüütus. Alates ajutiste failide puhastamisest kuni andmete turvalisuse tagamiseni varukoopiate abil on nende protsesside automatiseerimine võtmetähtsusega, et vältida pettumust ja takistada lihtsa möödalaskmise tõttu kuu töö hävitamist.
Selle probleemi lahendamiseks on UNIX-i-laadsetel süsteemidel legendaarne tööriist nimega Cron. Põhimõtteliselt on see nagu käskude äratuskell , mis käivitab skripte või rakendusi täpselt teie määratud ajal, töötades taustal, samal ajal kui te kohvi joote või ülesande olemasolust täiesti unustate.
Mis täpselt on Cron ja kuidas see liigub?
Cronist rääkides peame silmas deemonit nimega crond . Linuxi maailmas on deemon lihtsalt protsess, mis töötab taustal ilma kasutajaliideseta alates süsteemi käivitumisest. Selle töö on monotoonne, kuid oluline: see kontrollib iga minut konfiguratsioonifaile, et näha, kas on olemas ajastatud cron-töid, mis vastavad praegusele kellaajale ja kuupäevale.
Et kõik sujuks, on oluline, et süsteemikell oleks õigesti seatud. Kui kellaaeg või ajavöönd on vale, siis teie varukoopiad käivituvad valel ajal. Seetõttu on soovitatav kasutada käsku `timedatectl` , et kontrollida NTP-serveritega sünkroonimise õigsust ja tagada, et süsteemis ei oleks ajaviidet.
Crontab-fail: kus maagia sünnib
Kui mootor on Cron, siis crontab on käskude kaart . See on tekstifail, kuhu kirjutame, mida ja millal me käivitada tahame. Huvitaval kombel pole ainult üks fail; süsteemil on globaalne crontab aadressil /etc/crontab, aga igal kasutajal saab olla oma , mis võimaldab erinevatel inimestel oma ülesandeid ajastada ilma kogu aeg administraatori õigusi vajamata.
Nende ülesannete haldamiseks kasutame käsku `crontab -e` redigeerimiseks, `crontab -l` aktiivsete failide loetlemiseks ja `crontab -r`, kui tahame kõik kustutada ja otsast alustada. See on väga puhas viis süsteemi hoolduse korraldamiseks ilma kriitilisi kerneli faile puutumata.
Croni süntaksi lahtimõtestamine
Ülesande ajastamiseks peate järgima väga ranget järjekorda, mis koosneb viiest ajaväljast ja seejärel käsust. Järjestus on: minut, tund, kuu päev, kuu ja nädalapäev . Näiteks kui sisestame 0 19 * * 0, käsime süsteemil aktiveerida igal pühapäeval kell 7.
Meie elu lihtsamaks tegemiseks on olemas erimärgid mis annab meile täieliku kontrolli. Tärn (*) tähendab "alati" või "mis tahes väärtust", samas kui kaldkriipsu (/) kasutatakse intervallide määratlemiseks, näiteks */10 midagi iga kümne minuti tagant käivitama. Sidekriips (-) määrab vahemikud ja koma (,) võimaldab teil loetleda konkreetseid väärtusi. Lisaks on olemas eelmääratud otseteed näiteks @daily, @weekly või @reboot, mis lihtsustavad kirjutamist kõige levinumate juhtumite korral.
Oma esimese varundussüsteemi loomine
Üks kasulikumaid rakendusi on andmete varundamine. Selleks on TAR-tööriist ideaalne natiivne valik . Saame luua Bash-skripti, mis pakib meie failid, määrab failinimele praeguse kuupäeva ja, mis kõige tähtsam, jätab välja mittevajalikud kaustad , näiteks vahemälu või prügikasti, et varukoopiast ei saaks gigabaiti rämpsu.
Kui skript on loodud (näiteks kaustas /usr/local/bin/mybackup) ja täitmisõigused antud käsuga chmod +x , lisa lihtsalt rida root crontab'i. Nii teeb server varundamise automaatselt ja sa saad isegi ajastada skripti nii, et see kustutab automaatselt üle kahe nädala vanad varukoopiad, et vältida kõvaketta täitumist .
Täiustatud haldus ja absoluutsed teed
Algajate seas on väga levinud viga skriptides suhteliste teede kasutamine. Cron töötab väga piiratud keskkonnas ega tea teie asukohta, seega peaksite alati kasutama absoluutseid teid (näiteks /home/user/script.sh ./script.sh asemel). Vastasel juhul ebaõnnestub käsk märkamatult ja teid ootab ebameeldiv üllatus, kui peate oma andmed taastama.
Pimedasse mineku vältimiseks on oluline suuna väljund logidesseOperaatori kasutamine >>> /var/log/backup.log 2>&1Saame nii õnnestumised kui ka ebaõnnestumised faili salvestada. Nii peame valesti mineva asja korral ainult logifaili vaatama, et täpselt teada saada, mis juhtus, ilma et peaksime ise arvama.
Mõju tulemuslikkusele ja parimatele tavadele
Süsteemi ei ole soovitatav üle koormata ülesannetega, mis töötavad iga sekund, kuna see võib põhjustada protsessori ja muutmälu kasutuse järsku suurenemist . Kõige targem lähenemisviis on ajastada ressursimahukad protsessid, näiteks andmebaasi värskendused või suured varukoopiad, varahommikustele tundidele või väljaspool tipptundi, et vältida kasutajate mõjutamist.
Selleks, et vältida ühe ülesande kattumist teisega, kui esimese täitmine võtab oodatust kauem aega, on soovitatav kasutada flocki , mis takistab sama skripti samaaegset käivitamist. Lisaks saab administraator Croni kasutajate arvu piiramiseks konfigureerida failid cron.allow ja cron.deny , tagades, et ainult volitatud töötajad saavad serveris ülesandeid ajastada.
Kaasaegsed alternatiivid: Systemd taimerid ja palju muud
Kuigi Cron on klassikaline töövahend, kasutavad tänapäevased süsteemid systemd taimereid . Need on palju võimsamad, kuna võimaldavad hallata sõltuvusi, tõhusamalt vigu käsitleda ja ülesandeid täita süsteemisündmuste (näiteks käivitamise) põhjal, mitte ainult kella järgi. Neid konfigureeritakse failide .timer ja .service abil kataloogis /etc/systemd/system/.
Neile, kellele terminal ei sobi, on olemas graafilised valikud nagu KCron (KDE jaoks) või veebipõhised tööriistad nagu Webmin. Teistes operatsioonisüsteemides, näiteks macOS-is, kasutatakse launchd- d , mis pakub palju sügavamat integratsiooni Apple'i ökosüsteemiga, võimaldades ebaõnnestunud ülesandeid automaatselt taaskäivitada.
Muud reaalse maailma kasutusjuhud serverites
Lisaks varukoopiatele on Cron ideaalne tööriist süsteemi puhtana hoidmiseks . Saate ajastada ülesandeid vanade logide kustutamiseks iganädalaselt või taaskäivitada teenuseid, mis kipuvad krahhi tegema. See on oluline ka andmete sünkroniseerimiseks rsynci abil erinevate masinate vahel, tagades teabe replikeerimise ilma inimese sekkumiseta.
Veebikeskkondades kasutatakse seda pidevalt massmeilide saatmiseks , igapäevaste müügiaruannete genereerimiseks või lehe vahemälu värskendamiseks. Põhimõtteliselt saab ja tuleks iga korduv ja etteaimatav toiming delegeerida Cronile, et optimeerida administraatori tootlikkust.
Linuxi automatiseerimise valdamine võimaldab teil käsitsi hallatava serveri muuta autonoomseks ja tõhusaks masinaks. Kombineerides Bash-skriptide kasutamist, crontabi täpsust ja logide jälgimist, saate tagada, et hooldus, turvalisus ja andmete terviklikkus hallatakse automaatselt, vabastades aega ja vähendades oluliselt inimlike vigade varu infrastruktuuri haldamisel.



