- Nag-aalok ang Linux ng kumpletong ecosystem para sa pag-automate ng mga gawain: Saklaw ng mga Bash script, cron, anacron, at at systemd timer ang lahat mula sa mga minsanang pagpapatupad hanggang sa mga kumplikado at paulit-ulit na trabaho.
- Ang wastong paggamit ng mga crontab, environment variable, log, at mga mekanismo ng pagla-lock tulad ng flock ay susi sa maaasahan at madaling mapanatiling mga automation.
- Pinahuhusay ang seguridad at pagganap sa pamamagitan ng pag-automate ng mga kontrol: pagpapatigas ng SSH, mga firewall, SELinux, paglilinis ng pakete at serbisyo, at mga profile sa pag-optimize tulad ng tuned.
- Ang mga tool sa orkestrasyon tulad ng Ansible ay nagbibigay-daan sa iyong palawakin ang automation na ito sa sampu o daan-daang server, na tinitiyak ang pare-pareho at paulit-ulit na mga configuration.
Kung araw-araw mong ginagamit ang Linux, malao't madali mo itong mapagtatanto Ang paulit-ulit na paggawa ng parehong gawain ay isang napakalaking pag-aaksaya ng oras.Mga manu-manong pag-backup, paglilinis ng mga pansamantalang file, pag-update ng mga package, pagsusuri ng status ng system... lahat ng iyan ay maaaring italaga sa system para awtomatikong mangyari habang gumagawa ka ng mas kawili-wiling mga bagay (o natutulog nang mahimbing).
Ang ecosystem ng Linux ay dinisenyo para dito sa loob ng mga dekada: I-automate ang mga gawain nang maaasahan, may kakayahang umangkop, at ligtasMula sa mga klasikong cron at at command, hanggang sa anacron, hanggang sa mga systemd timer at malalaking liga gamit ang Ansible, mayroon kang malawak na hanay ng mga tool upang masakop ang lahat mula sa pinakasimpleng script hanggang sa orkestrasyon ng daan-daang server. Sa gabay na ito, pagsasama-samahin namin ang lahat ng mga piraso na ito at gagawing praktikal ang mga ito gamit ang mga detalyadong paliwanag at malinaw na mga halimbawa.
Ano ang ibig sabihin ng automation sa Linux at bakit dapat mong bigyang-pansin ito?
Kapag pinag-uusapan natin ang automation sa Linux, ang tinutukoy natin ay upang iiskedyul ang pagpapatupad ng mga utos, script, o serbisyo nang walang interbensyon ng taoMinsanan man o regular. Nalalapat ito sa iyong personal na laptop at sa isang production server cluster.
Ang automation ay may ilang malinaw na bentahe: binabawasan nito ang pagkakamali ng tao sa pamamagitan ng pag-aalis ng mga paulit-ulit na gawain, nakakatipid ng oras, at tinitiyak na Ang mga kritikal na gawain ay palaging isinasagawa nang may parehong katumpakan at nagbibigay-daan para sa istandardisadong pangangasiwa ng sistema. Ang Linux ay lalong mahusay dito dahil dinisenyo ito mula sa simula upang gumana sa mga script at mga tool sa console na lubos na mapagsasama-sama.
Totoo na ang ilan ay nangangamba na ang labis na automation ay lilikha ng pagdepende sa teknolohiya o mawawala ang kaalamang manuwal, ngunit Kapag ginamit nang maayos, nakakapaglaan ito ng oras para sa mga gawaing mas mahalaga.: disenyo ng arkitektura, pagsusuri ng seguridad, pagpapabuti ng proseso o direktang pag-unlad.
Sa pang-araw-araw na operasyon, ang automation sa Linux ay karaniwang nakabatay sa ilang mga haligi: Mga script ng Bash, cron/anacron, at, mga systemd timer, at mga tool sa pamamahala ng configuration tulad ng AnsibleAng bawat isa ay sumasaklaw sa iba't ibang uri ng pangangailangan, na ating titingnan nang detalyado.
Cron: ang mahalagang klasiko ng pana-panahong automation
Kung may isang tool na dapat saulohin ng bawat administrador ng Linux, ito ay ang cron. Ang Cron ay isang daemon na tumatakbo sa background at naglulunsad ng mga utos o script sa mga partikular na oras.: bawat minuto, bawat oras, araw-araw, lingguhan, buwanan, o sa mas kumplikadong mga kumbinasyon.
Nagmula ang pangalan nito chronos, oras sa GriyegoAng Vixie Cron ay umiiral na sa Unix simula pa noong huling bahagi ng dekada 70. Karamihan sa mga modernong distribusyon (Debian, Ubuntu, Fedora, atbp.) ay gumagamit ng ilang variant ng Vixie Cron, na mahusay na nasubukan at matatag. Para sa mga kapaligiran ng produksyon, ito ay isang pangunahing bahagi, halos kasinghalaga ng kernel mismo.
Ang paggamit ng cron ay nagbibigay-daan sa iyong i-automate ang mga bagay tulad ng mga backup gabi-gabi, pag-ikot ng log, mga gawain sa pagsubaybay, mga script ng pagpapanatili, o pagbuo ng ulatSimple lang ang pilosopiya: ikaw ang magtatakda kung ano ang patatakbuhin at kailan, at ang cron ang bahala sa iba, nang walang mga graphical window o stories.
Bukod pa rito, ang cron ay available sa halos anumang sistemang katulad ng Unix, kaya Ang natutunan mo gamit ang cron ay kapaki-pakinabang para sa maraming iba't ibang kapaligiranmula sa murang VPS patungo sa isang corporate server.
Arkitektura ng cron ng Linux: daemon, crontab, at mga espesyal na direktoryo
Para magamit nang epektibo ang Cron, makakatulong na maunawaan kung paano ito nakabalangkas sa loob. Sa pangkalahatan, Ang sistema ay nakabalangkas sa crond daemon, mga crontab file, at ilang mga espesyal na direktoryo. pinamamahalaan ng system.
Ang cron daemon ay nagsisimula kasama ng system (karaniwan ay sa pamamagitan ng systemd o ng kaukulang init) at Nanatili siyang gising, sinusuri bawat minuto kung may mga gawaing maaaring mag-trigger.Kapag nakita nito na ang isang linya ay tumutugma sa kasalukuyang minuto, inilulunsad nito ang nauugnay na utos sa isang bagong proseso ng shell.
Ang bawat gumagamit ng sistema ay maaaring magkaroon ng sarili nilang scheduling file, na kilala bilang crontab. Ang mga crontab ng gumagamit ay karaniwang nakaimbak sa mga path tulad ng /var/spool/cron/ o /var/spool/cron/crontabs/Depende sa distribusyon. Mahalagang huwag manu-manong i-edit ang mga ito, kundi sa pamamagitan ng utos. crontab, na siyang nagpapatunay sa syntax at nagpapaalam sa daemon na may mga pagbabago.
Bukod sa mga crontab ng gumagamit, mayroon ding mga mga mekanismo ng cron na idinisenyo para sa sistemaAng /etc/crontab file, ang /etc/cron.d/ directory, at ang mga periodic directory tulad ng /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, at /etc/cron.monthly. Ang mga huling nabanggit na directory ay naglalaman ng mga script na pana-panahong pinapatakbo ng system gamit ang mga tool tulad ng anacron o run-parts utilities.
Ang pangkalahatang ideya ay iyon Ang cron daemon ay kumakain sa mga file at direktoryong ito.at sinusuri bawat minuto kung may kailangang isagawa. Ginagawang madali ng modular na arkitekturang ito para sa mga pakete ng sistema na i-install ang sarili nilang mga gawain nang hindi naaapektuhan ang pandaigdigang configuration.
sintaks ng crontab: ang limang field at ang kanilang mga operator
Isa sa mga bagay na pinakamadalas mong kabisaduhin kapag nagsimula ka sa cron ay ang syntax ng mga linya nito. Ang bawat entry ng crontab ng user ay binubuo ng limang field ng timestamp kasama ang command na isagawaBagama't hindi natin ginagaya ang literal na talahanayan, ang mga klasikong field ay minuto, oras, araw ng buwan, buwan, at araw ng linggo.
Tumatanggap ang bawat field ng mga numeric value, range, comma-separated list, mga hakbang na may forward slash, at maging ang karaniwang asterisk upang ipahiwatig ang "lahat ng posibleng value". Salamat sa mga operator na ito, maaari mong ipahayag ang mga kumplikadong pattern nang hindi kinakailangang sumulat ng dalawampung magkakaibang linya.
Bukod pa rito, maraming implementasyon ng cron ang tumatanggap ng mga espesyal na shortcut tulad ng @daily, @hourly, @weekly, @monthly, @reboot at mga katulad nito. Pinapasimple ng mga alias na ito ang mga karaniwang gawain, kaya hindi mo na kailangang tandaan ang pagkakasunud-sunod ng mga field.
Kapag ginagamit mo ang /etc/crontab file o ang /etc/cron.d/, Idinaragdag ang ikaanim na field upang tukuyin ang user kung kanino patatakbuhin ang gawain.Ito ay mahalaga para sa mga gawain ng system na kailangang patakbuhin bilang mga root o iba pang service account.
Ang pagsasaulo ng syntax na ito at pagsasanay gamit ang ilang mga halimbawa sa totoong buhay ang siyang nagpapaiba sa pagitan ng clumsy na paggamit ng cron at ng isang matagumpay na paggamit. Malinis, madaling basahin, at madaling panatilihing awtomatiko sa paglipas ng panahon.
Propesyonal na pamamahala ng crontab: pag-eedit, paglilista, at pagbersyon
Ang utos crontab Ito ang opisyal na interface para sa pagtatrabaho sa mga naka-iskedyul na gawain ng isang user. Gamit ito, maaari kang lumikha, mag-edit, maglista, at magbura pa ng iyong crontab, at higit sa lahat: Iniiwasan mong direktang hawakan ang mga internal file ng system, na nagbabawas ng mga error at problema sa pahintulot.
Isang lubos na inirerekomendang gawain sa mga seryosong kapaligiran ay Panatilihin ang mga nilalaman ng crontab sa mga na-bersyon na text file gamit ang GitSa ganitong paraan, maaari mong suriin kung sino ang nagbago ng ano at kailan, ihambing ang mga mas lumang bersyon, at mabilis na ibalik ang nakaraang configuration kung may sira pagkatapos ng isang pagbabago.
Posible ring mag-install ng crontab mula sa isang panlabas na file, na akmang-akma sa mga awtomatikong pamamaraan ng pag-deploy o imprastraktura bilang codeSa ganitong paraan, sa halip na manu-manong mag-edit sa bawat server, ipapadala mo ang parehong file sa lahat at ilalapat ang mga pagbabago nang pantay-pantay.
Sa pagsasagawa, karaniwang idinodokumento ng mga bihasang administrador ang bawat aytem sa linya na may naunang komento, mga gawain na may kaugnayan sa grupo, at mapanatili ang isang malinaw na pagpapangalan at kombensiyon ng landas para sa mga script na ginagamit sa cron. Ang disiplinang iyon ay ginagawang mas madali ang buhay pagkalipas ng ilang buwan.
Mga karaniwang halimbawa ng mga awtomatikong gawain gamit ang cron
Para maunawaan ang potensyal ng cron, suriin lamang ang mga karaniwang kaso ng paggamit. Isa sa mga pinakamadalas ay regular na pagpapanatili ng sistema: paikutin at i-compress ang mga log, linisin ang mga pansamantalang file, buuin muli ang mga search index, o burahin ang mga lumang backup.
Ang isa pang karaniwang bloke ay ang mga gawain sa pagsubaybayMedyo karaniwan ang pagpapatakbo ng mga script na sumusuri sa paggamit ng disk, load ng system, kalusugan ng ilang partikular na serbisyo, o pagkonsumo ng memory, at kung makakita ang mga ito ng mapanganib na threshold, bubuo ang mga ito ng log, magpapadala ng email, o magti-trigger ng alerto sa isang panlabas na sistema.
Sa larangan ng pagpapaunlad at mga database, malaki rin ang potensyal ng cron. Halimbawa, ang mga naka-iskedyul na gawain ay ginagamit upang magsagawa ng mga backup ng database, magpatakbo ng mga script na bumubuo muli ng mga sukatan o nag-e-export ng mga ulat sa mga CSV fileo kahit na para ayusin ang maliliit na pipeline ng pagproseso ng datos.
Ang lahat ng ito ay halos palaging sinusuportahan ng mga script ng Bash o iba pang mga wika na gumagawa ng aktwal na gawain, habang ang cron ang bahala sa "kailan." Ang paghihiwalay ng mga responsibilidad na ito ay nagpapanatili sa crontab na malinis at ang lohika ng negosyo ay nakapaloob sa magkakahiwalay na mga file.
Mga variable ng kapaligiran sa cron: ang klasikong pinagmumulan ng mga error
Isa sa mga pinakakaraniwang pagkakamali kapag ang isang tao ay nagsisimula sa cron ay ang pag-aakalang ang mga gawain ay awtomatikong isinasagawa. parehong kapaligiran gaya ng kapag nagtatrabaho ka sa interactive terminalMalayo na sa katotohanan: ang cron ay nagpapatakbo ng mga utos sa isang limitadong konteksto, na may limitadong PATH at walang mga pagpapasadya ng iyong shell.
Nangangahulugan ito na maraming script na gumagana nang perpekto kapag manu-manong pinatakbo ay nabibigo sa ilalim ng cron dahil Hindi nila mahanap ang mga binary, hindi nila mahanap ang mga relatibong landas, o umaasa sila sa mga variable ng kapaligiran na hindi umiiral.Simple lang ang solusyon: tahasang tukuyin ang PATH at anumang iba pang kinakailangang baryabol sa loob mismo ng crontab o sa script.
Karaniwan din na kontrolin ang kilos ng email gamit ang variable na LANGISupang ang karaniwang output ng mga gawain ay makarating sa mailbox ng isang gumagamit o kaya ay itapon. Sa mga kapaligiran kung saan hindi naka-configure ang mail system, ipinapayong i-redirect ang output sa mga file sa /dev/null upang maiwasan ang tahimik na akumulasyon.
Sa buod, kapag nagdidisenyo ng mga cron job, kailangan mong isipin na tumatakbo ang mga ito sa isang uri ng "minimalist na kapaligiran" at iyon Dapat na malinaw na ideklara ang lahat ng kailangan ng iyong script.
Ang /etc/crontab, /etc/cron.dy ay mga pana-panahong direktoryo
Bukod sa mga indibidwal na crontab, nag-aalok ang Linux ng Ang system crontab ay karaniwang matatagpuan sa /etc/crontabAng file na ito ay naiiba sa mga file ng user dahil mayroon itong karagdagang field upang ipahiwatig ang account kung saan ilulunsad ang command, isang bagay na mahalaga para sa mga pandaigdigang gawain.
Karaniwang tinutukoy ng file na iyon, bukod sa iba pang mga bagay, ang pagpapatupad ng mga script sa /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly at /etc/cron.monthlySa maraming sistema, ang mga pagpapatupad na ito ay ipinagkakatiwala sa mga kagamitan tulad ng anacron, na tinitiyak na ang mga gawain ay naisakatuparan kahit na ang computer ay hindi naka-on sa eksaktong oras.
Direktoryo /etc/cron.d/ Nagho-host ito ng mga karagdagang crontab file, na karaniwang ini-install ng mga system package o mga external tool. Ang bawat file ay sumusunod sa parehong format gaya ng /etc/crontab, kabilang ang user field. Ito ang inirerekomendang paraan upang Magdagdag ng mga gawain ng system nang hindi ginagalaw ang pangunahing crontab.Pinapabuti nito ang pagpapanatili at pinipigilan ang mga conflict habang nag-a-update.
Ang karaniwang daloy ng trabaho ay pana-panahong sinusuri ng cron daemon ang mga file na ito at, kasama ng anacron o run-parts, Pinapagana nito ang mga script na nakapaloob sa mga pana-panahong direktoryo sa kani-kanilang oras.Bilang administrator, kailangan mo lang iwanang maayos na nakahanda ang iyong mga script sa tamang lugar.
Anacron: kapag ang kagamitan ay hindi laging naka-on
Ang isang kilalang limitasyon ng cron ay kung ang computer ay naka-off kapag oras na para magpatakbo ng isang gawain, mawawala ang pagpapatupad na iyon. Ang Anacron ay nilikha upang punan ang kakulangang ito.lalo na sa mga makinang hindi nakabukas 24/7, tulad ng mga laptop o desktop sa opisina.
Ang Anacron ay hindi gaanong ginagabayan ng eksaktong petsa at oras, kundi ng bilang ng mga araw na lumipas mula noong huling pagpapatupad ng isang gawain. Kapag nagsimula ang system, sinusuri nito kung aling mga pang-araw-araw, lingguhan, o buwanang gawain ang nilaktawan. at muling pinoprograma ang mga ito upang tumakbo nang may maliit na nako-configure na pagkaantala.
Mahalaga ang delay field na iyon sa minuto dahil Pinipigilan nito ang lahat ng nakabinbing trabaho na mailunsad nang sabay-sabay sa pagsisimula.Maaari nitong ma-overload ang sistema. Sa halip, ang mga ito ay staggered, na nagbibigay-daan sa koponan na magsimula nang mas unti-unti.
Sa maraming modernong sistema, kung mayroong anacron, ito ang responsable para sa mga script sa /etc/cron.daily, /etc/cron.weekly, at /etc/cron.monthly, habang ang cron ay humahawak ng mas pino at mas madalas na mga gawain. Ginagawa ito ng kombinasyong ito na Dapat maging matatag ang mga sistema ng automation kahit sa mga makinang madalas na pinapatay..
Ang utos na "at": isang beses na pagpapatupad sa hinaharap
Habang ang cron at anacron ay nakatuon sa mga paulit-ulit na gawain, ang utos Sinasaklaw ng at ang isang napakasimple at kapaki-pakinabang na kaso: ang pag-iiskedyul ng isang utos na tumakbo nang isang beses lamang sa isang partikular na oras sa hinaharap. Parang nag-iiwan ng tala na nakadikit sa sistema para ipagawa ito ng isang bagay "bukas ng 9:30" o "sa loob ng 2 oras".
Ang syntax ng `at` ay madaling gamitin at nagbibigay-daan para sa natural na mga ekspresyon ng oras. Kapag natukoy mo na ang trabaho, Iniimbak ito ng sistema sa isang pila at isinasagawa ito sa takdang oras.Pagkatapos nito, mawawala ang trabaho, hindi tulad ng cron, na nagpapanatili sa gawain hanggang sa baguhin o burahin mo ito.
Ang kagamitang ito ay lalong maginhawa para sa mga partikular na gawain na ayaw mong kalimutan ngunit hindi makatuwiran bilang mga paulit-ulit na gawain: mga naka-iskedyul na pag-restart, pagpapatakbo ng maintenance pagkatapos ng isang work window, o mga pagsubok na dapat ilunsad sa isang partikular na oras.
Kapag sinamahan ng mahuhusay na script, ang `at` ay nagiging isang eleganteng wildcard na nakakalimutan ng maraming gumagamit na mayroon, ngunit Maaari nitong lubos na gawing simple ang iyong pang-araw-araw na buhay kapag ang paggawa ng isang bagong cron entry ay hindi sulit..
systemd timers: ang modernong alternatibo sa cron
Sa mga modernong distribusyon na gumagamit ng systemd (Ubuntu, Debian, Fedora, CentOS at marami pang iba), may isa pang paraan para mag-iskedyul ng mga gawain: mga systemd timerSa halip na umasa sa mga crontab, dito mo tinutukoy ang mga service unit (.service) at timer unit (.timer) na pinamamahalaan ng systemd tulad ng ibang mga serbisyo.
Namumukod-tangi ang mga systemd timer dahil Perpekto silang nakikisama sa iba pang bahagi ng systemd ecosystemMaaari mong tingnan ang status, mga log, at mga dependency gamit ang parehong pamilyar na mga tool (journalctl, systemctl, atbp.). Ito ay mainam para sa mga kumplikadong trabaho na kailangang simulan pagkatapos ng ibang mga serbisyo, ipatupad ang mga patakaran sa pag-restart, o magpanatili ng mga detalyadong log.
Ang isang karaniwang timer ay binubuo ng isang service file na tumutukoy sa kung ano ang isinasagawa (isang script, isang binary, isang partikular na aksyon) at isang timer file na tumutukoy kung kailan at gaano kadalas ito inilulunsad. Nag-aalok ang Systemd ng mga flexible na expression sa kalendaryo at mga opsyon tulad ng persistence.na tinitiyak na ang trabaho ay isasagawa pagkatapos ng isang pagsasara kung ito ay "nilaktawan".
Kapag pumipili sa pagitan ng cron at systemd timers, isang magandang tuntunin ay tanungin ang iyong sarili kung kailangan mo mga integrated log, service dependencies, o advanced persistenceKung oo ang sagot, karaniwang mas mainam ang isang timer. Para sa mga simple at pangkalahatang gawain, ang cron ay nananatiling isang beterano at ganap na balidong opsyon.
Sa huli, walang digmaan sa pagitan ng dalawang pamamaraan: Maaari mong gamitin ang cron para sa mga simpleng gawain at mga timer para sa mga sopistikadong gawain., nang walang anumang problema sa pakikipamuhay nang magkakasama sa iisang sistema.
Seguridad at kontrol sa pag-access sa cron
Dahil halos anumang utos ang kayang isagawa ng cron nang may naaangkop na mga pahintulot ng gumagamit, ang seguridad ay isang mahalagang isyu. Isinasama ng Linux ang mga mekanismo ng kontrol batay sa mga file na /etc/cron.allow at /etc/cron.denyna tumutukoy kung aling mga user ang maaaring gumamit ng cron.
Depende sa configuration, maaaring payagan lamang ng sistema ang cron sa mga nasa whitelist, o tahasang tanggihan ito sa mga nasa blacklist. Mahalaga ang wastong pamamahala ng mga file na ito sa mga multi-user na kapaligiran o mga nakalantad na server.kung saan hindi kanais-nais para sa anumang account na punuin ang mga mapagkukunan ng mga gawaing hindi maganda ang disenyo.
Bukod pa rito, ipinapayong limitahan kung aling mga script ang tumatakbo bilang root at maingat na suriin ang code ng anumang naka-iskedyul na gawain na may matataas na pribilehiyo. Ang isang simpleng pagkakamali sa isang cron script na may mga pribilehiyo ng administrator ay maaaring magbukas ng isang kahinaan sa seguridad. napakaseryoso.
Sa mas advanced na mga konteksto, ang mga tool tulad ng SELinux o AppArmor ay maaaring magdagdag ng karagdagang mga layer ng kontrol sa kung anong mga proseso ang maaaring gawin ng cron, na lalong nagpapalakas sa seguridad ng system.
Pag-debug ng mga cron job: metodolohiya at mga karaniwang error
Kapag ang isang naka-iskedyul na gawain ay hindi nagagawa ang inaasahan mo, ang pinakamahusay na estratehiya ay huwag ang "pabalik-balik nang walang patutunguhan," kundi ang magpatuloy. isang maliit na pamamaraan ng pagsusuriAng unang hakbang ay ang pag-verify na ang cron daemon ay talagang aktibo at pinagana, gamit ang mga service tool ng distribution.
Pagkatapos, kailangan mo Suriin ang mga system log at mga partikular na cron log Oo, mayroon nga. Madalas kang makakakita ng mga syntax error sa crontab, mga problema sa pahintulot, o mga pagkabigo sa pagpapatupad ng script na hindi agad halata.
Ang susunod na lohikal na hakbang ay ang manu-manong pagpapatupad ng script o command na sinusubukang ilunsad ng cron, ngunit ginagaya ang cron environment sa abot ng makakaya: parehong user, parehong ruta, nang hindi umaasa sa mga alias o function ng iyong interactive shell.
Kabilang sa mga pinakakaraniwang error ay: nakakalimutang i-redirect ang standard at error output, paggamit ng mga relative path na walang katuturan kapag pinapatakbo ng cron ang script, pag-aakalang kasama sa PATH ang mga directory na wala talaga roon, o hindi isinasaalang-alang na maaaring mag-overlap ang maraming instance ng parehong gawain sa paglipas ng panahon.
Ang pagwawasto sa mga problemang ito ay kinabibilangan ng Tukuyin nang malinaw ang lahat, gumamit ng mga absolute path, magdagdag ng mga debug log, at protektahan ang mga gawain laban sa sabay-sabay na pagpapatupad. kung may posibilidad na iyon.
Mahusay na propesyonal na kasanayan sa cron
Sa paglipas ng mga taon, ang komunidad ng mga tagapangasiwa ng sistema ay nakabuo ng isang serye ng mga rekomendasyon na gumagawa ng pagkakaiba sa pagitan ng "pagkakaroon ng apat na cron job na naka-set up nang walang ingat" at propesyonal na pamahalaan ang automation.
Ang isang ginintuang tuntunin ay palaging i-redirect ang output ng bawat gawain sa isang log file na /dev/nullKung hindi mo ito gagawin, susubukan ng cron na ipadala ang output na iyon sa pamamagitan ng email sa user, na maaaring mapuno ang mga mailbox ng root o basta mawala kung hindi na-configure ang mail system, na magpapahirap sa diagnosis.
Isa pang mahalagang kasanayan ay i-package ang logic sa magkakahiwalay na script sa halip na magsulat ng mga command na kilometro ang haba nang direkta sa crontabSa ganitong paraan, mas madali mong mabibigyan ng bersyon ang script, masusubukan ito nang manu-mano, madodokumento ito, at mas madaling magamit muli.
Upang maiwasan ang magkakapatong na problema, ang mga kagamitan tulad ng kawan Pinapayagan nila ang pagpapatupad ng mga simpleng mekanismo ng pagharang: kung ang isang instance ng isang gawain ay tumatakbo pa rin, ang susunod ay maaaring maghintay o magtatapos nang hindi isinasagawa. Mahalaga ito para sa mga mabibigat na gawain sa pag-backup o pagproseso ng data.
Panghuli, mainam na lagyan ng malinaw na paglalarawan ang bawat linya ng crontab at itago ang file. sa ilalim ng kontrol ng bersyon gamit ang Git o mga katulad na sistemaSa paglipas ng panahon (o sa pagbabago ng administrator), ang mga komentong iyon at ang kasaysayan ng pagbabago ay magiging purong ginto.
Bash Scripting: Ang makinang nagpapatakbo ng mga automation
Magkukulang ang lahat ng nabanggit kung wala tayong kapaki-pakinabang na mapapatakbo, at diyan pumapasok ang mga Bash script. Ang script ay isa lamang isang text file na may mga utos na isa-isang isinasagawa ng shell, na parang ikaw mismo ang nagta-type ng mga ito, pero hindi napapagod.
Sa kasaysayan, ang mga shell script ay nasa puso ng automation sa Unix simula pa noong dekada 70. Sa pagdating ng Bash bilang default na shell sa maraming distribusyon, Pinagsama-sama ang isang simple ngunit napakalakas na wika ng scripting, perpekto para sa pag-uugnay ng mga bahagi ng system, pagproseso ng mga file, at pag-coordinate ng mga panlabas na programa.
Sa praktikal na antas, ang isang tipikal na script ng Bash ay nagsisimula sa linya #! / bin / bash upang ipahiwatig ang shell na dapat magbigay-kahulugan dito, magtakda ng mga variable, magpatupad ng mga utos, gumamit ng mga conditional at loop, at magdagdag ng mga mensaheng nagbibigay-kaalaman gamit ang echo upang malaman natin kung ano ang nangyayari.
May mga napakasimpleng script na naglilipat lamang ng ilang file at ang iba ay mas detalyado, nagsasagawa ng kumpletong mga backup, bumubuo ng mga ulat, at Pinagsasama ang mga ito sa cron o at para awtomatikong tumakbo. tuwing madalas.
Ang susi ay ang anumang gawain na madalas na inuulit sa terminal ay isang perpektong kandidato upang maging isang script, na makakatipid sa iyo ng oras at mga nakakatawang pagkakamali sa katamtamang termino.
Praktikal na halimbawa: pang-araw-araw na backup gamit ang Bash at cron
Isang napakakaraniwang kaso ang pagnanais Gumawa ng pang-araw-araw na backup ng isang partikular na mahalagang folderSa Bash, nalulutas ito sa ilang linya, na lumilikha ng isang direktoryo na may kasalukuyang petsa at kasama ang mga kaugnay na data sa loob nito.
Ang pangkalahatang lohika ay karaniwang ganito: bumuo ng isang string na may petsa ngayon, bumuo ng isang destination path na kasama nito, lumikha ng direktoryong iyon kung wala ito, kopyahin nang paulit-ulit ang iyong mahahalagang data, at panghuli, magpakita ng isang mensahe na nagpapahiwatig na ang backup ay matagumpay na nakumpleto.
Kung isasama mo rin ito sa pag-encrypt ng mga backup, ang paggamit ng tar/gz sa Linux o ligtas na transportasyon papunta sa ibang server sa pamamagitan ng VPN o SSH tunnels, Maaari kang mag-set up ng isang disenteng backup na diskarte nang walang gaanong abala, umaasa lamang sa mga klasikong tool ng Linux.
Maaari mong i-save ang script na ito sa isang direktoryo tulad ng /usr/local/sbin o sa iyong scripts folder at bigyan ito ng mga pahintulot na mag-execute. Pagkatapos, gamitin ang cron upang patakbuhin ang programa. awtomatikong pagpapatupad sa oras na ang server ay hindi naglo-loadHalimbawa, tuwing hatinggabi.
Kung isasama mo rin ito sa pag-encrypt ng mga backup o ligtas na transportasyon papunta sa ibang server sa pamamagitan ng VPN o SSH tunnels, Maaari kang mag-set up ng isang disenteng backup na diskarte nang walang gaanong abala, umaasa lamang sa mga klasikong tool ng Linux.
Pangunahing automation gamit ang mga script ng Bash: mga unang hakbang
Kung nagsisimula ka pa lang sa scripting, ang pinakamatalinong gawin ay gawin ito nang paunti-unti. Una, gumawa ng walang laman na file, i-edit ito gamit ang paborito mong editor, at magdagdag ng ilang linya ng mga command.I-save ito, bigyan ito ng mga pahintulot sa pagpapatupad, at subukan ito.
Ang mga unang pagsasanay ay karaniwang binubuo ng I-automate ang mga simpleng gawain tulad ng paglilista ng mga file, paglilipat ng mga ito sa mga partikular na folder, o paglilinis ng mga pansamantalang direktoryo.Ito ay magpapakilala sa iyo sa syntax, mga variable, mga pahintulot, at mga mensaheng output.
Sa susunod, maaari mong isaalang-alang ang mga script na nagtatala ng petsa at oras sa isang log paminsan-minsan, gumagawa ng mga naka-compress na kopya ng /etc/ sa gabi, o sumusuri sa espasyo sa disk at nagpapadala ng alerto kapag lumampas na sa isang tiyak na porsyento ng paggamit.
Isang napaka-malusog na gawi ang paggamit ng echo bilang isang tool sa pag-debugSa ganitong paraan, inililimbag ng script kung aling hakbang ang isinasagawa nito, ang mga halaga ng mga pangunahing baryabol, at kung nakaranas ito ng anumang problema. Lubos nitong pinapadali ang paghahanap ng mga error sa lohika.
Sa pamamagitan ng pagsasanay, makakabuo ka ng isang maliit na "personal na library" ng mga script na magiging iyong mga tahimik na katulong, handang tumakbo nang mag-isa salamat sa cron, at, o systemd timers.
Awtomasyon at seguridad: pagpapalakas ng Linux server
Halos bawat oras na pinag-uusapan ang automation sa mga seryosong server, ang usapan ay hindi maiiwasang napupunta sa seguridad. Ang pagpapalakas ng isang Linux server ay kinabibilangan ng pagbabawas ng mga atake nito, paglalapat ng mga pinakamahuhusay na kasanayan, at pag-automate ng mga kontrol sa seguridad. para hindi sila umasa sa pag-alala "sa pamamagitan ng kamay".
Ang unang bloke ng susi ay ang pamamahala ng user accountInirerekomenda na iwasan ang mga generic o halatang username (tulad ng "admin" o "oracle"), gumamit ng mga pangalan na hindi gaanong mahuhulaan, magtatag ng matatag na mga patakaran sa password na may pana-panahong pag-expire, at isaayos ang mga saklaw ng UID upang hindi ito madaling hulaan.
Isa pang bagay na dapat isaalang-alang ay ang mga naka-install na software package. Habang dumarami ang hindi kinakailangang software na mayroon ka, lalong lumalawak ang iyong attack surface. Kaya naman mainam na kasanayan na... Ilista ang mga naka-install na pakete, tanggalin ang mga hindi nagamit na pakete, at subaybayan ang mga dependency. upang maiwasan ang hindi sinasadyang pagkaantala sa mga mahahalagang serbisyo.
Kailangan mo ring suriin ang mga tumatakbong serbisyo gamit ang mga tool tulad ng systemctl, paghinto at pag-disable sa mga hindi nakakatulong ng kahit ano, at Suriin ang mga listening port gamit ang mga utility tulad ng netstat o ss upang matiyak na tanging ang mga mahigpit na kinakailangan lamang ang bukas.
Kung magdadagdag tayo ng mahusay na SSH hardening (pag-disable ng direktang root login, paggamit ng key authentication, pagsasaayos ng mga timeout) at ang paggamit ng mga firewall tulad ng firewalld o iptables, Nakakakuha tayo ng ilang patong ng proteksyon laban sa mga panlabas na pag-atake nang walang labis na komplikasyon.
SELinux, mga firewall at pag-optimize na may tuned
Para sa mga kapaligiran kung saan prayoridad ang seguridad, ang mga kagamitang tulad ng pagpapatigas gamit ang SELinux Gumaganap ang mga ito bilang karagdagang mandatoryong hadlang sa pagkontrol ng pag-access, na naglilimita sa kung aling mga proseso ang maaaring gumawa ng ano, lampas sa mga tradisyonal na pahintulot.
Mahalagang suriin ang katayuan ng SELinux, mas mabuti kung iko-configure ito sa strict application mode at ayusin ang mga patakaran ayon sa mga pangangailangan ng sistema na may mga partikular na kagamitan. Bagama't maaaring mukhang medyo nakakatakot sa simula, kapag maayos na na-configure, hinaharangan nito ang maraming hindi gustong aksyon.
Sa konteksto ng network, ang firewalld o iptables Pinapayagan ka nitong magtakda ng detalyadong mga patakaran sa papasok at papalabas na trapiko.sa pamamagitan ng pagbubukas lamang ng mga partikular na serbisyo tulad ng SSH, HTTP, o anumang talagang kailangan. Malaki ang nababawasan nito sa bilang ng mga potensyal na sanhi ng pag-atake.
Sa kabilang banda, may mga kagamitan tulad ng nakaayos, dinisenyo para sa i-optimize ang pagganap ng system gamit ang mga paunang natukoy na profile batay sa uri ng workload: server, desktop, virtual guests, atbp. Ang pag-activate ng naaangkop na profile at pagpapahintulot sa tuned na pamahalaan ang ilang partikular na parameter ay nakakatipid ng oras at nagpapabuti sa pangkalahatang performance.
Walang saysay ang lahat ng ito kung minsan lang itong gagawin at saka makakalimutan. Ang seguridad at pagganap ay nangangailangan ng patuloy na pagsusuri, regular na mga patch, at patuloy na pagsubaybay.At diyan mismo pumapasok ang automation: marami sa mga karaniwang gawaing ito ay maaaring i-program upang tumakbo nang mag-isa.
Ansible: malawakang automation at pamamahala ng configuration
Kapag lumipat ka mula sa isa o dalawang server patungo sa dose-dosenang o daan-daan, ang cron at local scripts ay nagkukulang sa pagpapanatili ng consistency. Pumasok ang Ansible bilang isang tool sa pamamahala ng automation at configuration Hindi ito nangangailangan ng mga ahente sa mga node, at umaasa sa SSH at mga nababasang YAML file.
Gamit ang Ansible, tinutukoy mo ang mga imbentaryo ng host, bumubuo ng mga pares ng SSH key para sa walang password na pagpapatotoo, at awtomatiko ang Pangangasiwa ng sistema ng Linux pagsusulat mga playbook na naglalarawan sa nais na estado ng mga server: aling mga pakete ang dapat i-install, aling mga serbisyo ang dapat aktibo, aling mga configuration file ang dapat na naroroon, atbp.
Ang malaking bentahe ay maaari mong ilapat ang parehong playbook sa maraming sistema nang sabay-sabay at upang makakuha ng pare-pareho at paulit-ulit na resultaNapakahirap itong makamit kung manu-manong inilalapat ng bawat admin ang mga pagbabago. Bukod pa rito, idempotent ang Ansible: ang pagpapatakbo ng parehong playbook nang maraming beses ay walang nasisira; tinitiyak lamang nito na ang lahat ay ayon sa nararapat.
Halimbawa, kayang i-install ng isang simpleng playbook ang tmux sa lahat ng server sa isang "web" group gamit lamang ang ilang linya ng code. Mula roon, maaaring bumuo ng mas kumplikadong mga automation: mga pag-deploy ng application, mga pagbabago sa bulk configuration, pag-ikot ng key, at iba pa.
Sa konteksto ng seguridad, ang Ansible ay mainam para sa Maglapat ng mga patakaran sa pagpapatibay, mag-configure ng mga firewall, mag-adjust ng SSH, o mag-deploy ng mga audit script sa lahat ng node sa isang sentralisadong paraan, na iniiwasan ang mga hindi pagkakaunawaan at paglihis.
Pang-araw-araw na automation: mga halimbawa at pilosopiya sa pagtatrabaho
Higit pa sa mga partikular na kagamitan, mayroong isang pag-iisip na nabubuo sa paglipas ng panahon: Sa tuwing uulitin mo ang isang bagay nang manu-mano nang ilang beses, mahalagang tanungin ang iyong sarili kung hindi ba ito maaaring awtomatiko.Literal na ginawa ang Linux para diyan.
Nakikita pa nga ng ilan ang terminal bilang isang tahimik na assistant na gumagawa ng mga bagay para sa iyo sa background: pag-iiskedyul ng mga paalala sa email, pagbuo ng mga lingguhang buod, pag-synchronize ng mga direktoryo sa mga remote server, o Linisin ang mga download at pansamantalang folder nang hindi kinakailangang mag-angat ng daliri.
Kahit ang mga kagamitang tulad ng sa, na kadalasang nakakalimutan, ay nagpapahintulot Mag-iskedyul ng minsanang pagpapatupad bukas sa isang partikular na oras nang hindi pinapakomplikado ang iyong buhay sa isang cron job.Kasama ng maayos na istrukturang mga script, ginagawang isang uri ng digital na "dishwasher" ng mga utility na ito ang iyong Linux na siyang bahala sa mga paulit-ulit na gawain.
Ang mahalaga ay lapitan ang automation gamit ang paghatol at sentido komunHindi ito tungkol sa pag-automate dahil uso ito, kundi tungkol sa pagsusuri kung aling mga gawain ang matagal, madaling magkamali ng tao, o may epekto kung makalimutan, at pagbibigay-priyoridad sa mga iyon.
Sa paglipas ng panahon, nauuwi ka sa pagsusulat ng maliliit na pagsasanay para sa iyong sarili: mga cron job na nagtatala ng petsa at oras upang suriin kung na-configure mo nang tama ang syntax, mga backup script, mga monitoring script, at maging ang mga conversion ng ilan sa mga gawaing iyon sa mga systemd timer na may persistence at random delays upang maipamahagi ang load.
Sa pamamagitan ng pagsasama-sama ng lahat ng mga piraso na ito—mga Bash script, cron, anacron, at, systemd timer, Ansible, mga pinakamahusay na kasanayan sa seguridad, mga firewall, at mga tool sa pag-optimize—nasa huli kang bubuo ng isang kapaligiran kung saan Gumagana ang Linux para sa iyo 24/7, nagpapanatili ng mga backup, nagpapalakas ng seguridad, at nangangalaga sa performance., habang inilalaan mo ang iyong sarili sa mga problemang hindi gaanong mekanikal at mas kawili-wili.
Talaan ng nilalaman
- Ano ang ibig sabihin ng automation sa Linux at bakit dapat mong bigyang-pansin ito?
- Cron: ang mahalagang klasiko ng pana-panahong automation
- Arkitektura ng cron ng Linux: daemon, crontab, at mga espesyal na direktoryo
- sintaks ng crontab: ang limang field at ang kanilang mga operator
- Propesyonal na pamamahala ng crontab: pag-eedit, paglilista, at pagbersyon
- Mga karaniwang halimbawa ng mga awtomatikong gawain gamit ang cron
- Mga variable ng kapaligiran sa cron: ang klasikong pinagmumulan ng mga error
- Ang /etc/crontab, /etc/cron.dy ay mga pana-panahong direktoryo
- Anacron: kapag ang kagamitan ay hindi laging naka-on
- Ang utos na "at": isang beses na pagpapatupad sa hinaharap
- systemd timers: ang modernong alternatibo sa cron
- Seguridad at kontrol sa pag-access sa cron
- Pag-debug ng mga cron job: metodolohiya at mga karaniwang error
- Mahusay na propesyonal na kasanayan sa cron
- Bash Scripting: Ang makinang nagpapatakbo ng mga automation
- Praktikal na halimbawa: pang-araw-araw na backup gamit ang Bash at cron
- Pangunahing automation gamit ang mga script ng Bash: mga unang hakbang
- Awtomasyon at seguridad: pagpapalakas ng Linux server
- SELinux, mga firewall at pag-optimize na may tuned
- Ansible: malawakang automation at pamamahala ng configuration
- Pang-araw-araw na automation: mga halimbawa at pilosopiya sa pagtatrabaho

