5 Crontabi näidet, mis aitavad teil Linuxi ülesandeid automatiseerida

5 Crontabi näidet, mis aitavad teil Linuxi ülesandeid automatiseerida

Programm cron automatiseerib teiste programmide käivitamist Linuxis. Cron on deemon, mis töötab pidevalt ja käivitab teisi programme vastavalt etteantud ajakavale. Selle ajakava määratlevad mitmed erinevad failid. Neid tuntakse individuaalselt krontabidena.





Cron saab ajastada mis tahes Unixi käsu või ülesande. Mõnikord soovite töötada lihtsa käsuga. Muul ajal peate kogu ülesande täitmiseks kirjutama skripti. Cron töötab hästi kummagi lähenemisega. Samuti toetab see keerukaid ajastamisreegleid ja paindlikke viise skripti väljundiga tegelemiseks.





Ükskõik, kas täidate lihtsaid kasutajaülesandeid või süsteemi täielikku haldamist, on praktiliste näidete abil vaja mõista, kuidas cron töötab.



1. Puhastamine /tmp System-Wide Crontab abil

The /tmp kataloog on ajutine asukoht üldotstarbeliseks kasutamiseks mis tahes programmi või süsteemi kasutaja poolt. Paljud Unixi süsteemid kustutavad käivitamisel kataloogist /tmp vanad failid. Teised ajastavad selle toimingu, kasutades sageli croni.

Kui aga soovite selle protsessi kohandatud juhtimist või rakendada seda mõnele teisele kataloogile, on kiire croni ülesande seadistamine lihtne viis seda teha.



Siin on üks viis puhastamiseks /tmp või mõni muu teie valitud kataloog:

1 3 * * * /usr/bin/find /tmp -type f -atime +10 -delete

Cron täidab selle käsu iga päev ühe minuti pärast kolm. See kasutab leidmise käsk failide otsimiseks kataloogist /tmp. See filtreerib välja kõik muu kui tavalised failid, mida viimati muudeti vähemalt 10 päeva tagasi. Seejärel eemaldab see kõik leitud failid.





Sellise käsu peaksite lisama globaalsele crontabile nagu /etc/crontab või root crontab abil sudo crontab -e . Käsk tuleb käivitada juurjuurina, et see saaks kustutada failid /tmp -st olenemata sellest, kellele need kuuluvad.

Pange tähele, et see näide määrab otsimiskäsu täieliku tee. Cron kasutab põhitõdesid PATH seadistus käivitatavate failide otsimiseks, nii et kui käsk on tavalises kohas (nt /usr/bin ), see pole tegelikult vajalik. Kui eelistate seda lähenemist, saate crontabis ise määrata alternatiivse PATH -i. Kuid käskude jaoks täieliku tee kasutamine on natuke vastupidavam.





Kui töötate projekti kallal, mis kirjutab logisid või salvestab vahemällu salvestatud andmeid, võib selline lähenemine olla hädavajalik, kui kustutate faile kettaruumi vabastamiseks. Kuigi ülaltoodud näide on kiire ja räpane lähenemisviis, peaksite kasutama sellist käsku nagu tmpwatch , kui see on saadaval.

2. Andmebaaside varukoopiad kaks korda päevas

Nüüdsest keskendume kasutajaspetsiifilistele ülesannetele, mida saate hallata oma kohaliku crontabi kaudu. Saate muuta oma praeguse kasutaja crontab -i, kasutades järgmist käsku:

crontab -e

See crontab peaks sisaldama teie kasutajakontole omaseid ülesandeid. Kujutage ette, et töötate projektiga, mis hõlmab MySQL -andmebaasi täitmist. Võite kasutada mysqldump tööriist kogu andmebaasi SQL -tõmbe loomiseks. Selle väljundi ümbersuunamisega saate hõlpsalt ajastada andmebaasi varukoopiaid.

30 4 * * * /usr/local/mysql/bin/mysqldump --login-path=local --databases albums > /tmp/album-db.$(date +\%s).sql

Vaikimisi saadab cron väljundi (sh vead) e -posti teel kasutajale, kellele crontab -fail kuulub. Kuid väljundit saate suunata samamoodi nagu käsurealt, kasutades > failinimi märge.

kuidas partiifaili kirjutada

Pange tähele, kuidas ülaltoodud näide kasutab käsu asendamist failinime loomiseks praeguse Unixi ajatempli alusel. Kuna % sümbolil on croni jaoks eriline tähendus, käsk peab sellest väljuma koos eelneva tagasilöögiga.

3. Saidi tööaja kontrollimine kohandatud skriptiga

Võib -olla märkasite, et viimase näite käsk oli ebamugavalt pikk. Õnneks ei takista miski teid käske skripti salvestamast ja skripti käivitamast oma crontabi kaudu. Siin on näide, mis käivitab skripti iga minut:

* * * * * /Users/bobby/bin/site-monitor.sh

Pange tähele, et teoreetiliselt saate kasutada KODU muutuja või tilde laiendamine lühema käsu jaoks:

* * * * * ~/bin/site-monitor.sh

Võite seda vältida, juhuks kui cron selle toetamise kunagi lõpetab. Kogu tee kasutamisel pole tõsist kahju ja see on vaieldamatult loetavam.

Skript ise kasutab selle hankimiseks curl -programmi HTTP olekukood antud URL -i jaoks. Kui olek näitab midagi muud kui edu, kirjutab skript väljundile sõnumi.

Nagu varem mainitud, saadab cron selle väljundi meile e -posti teel. See võib olla kasulik, kui käsud cronis ei anna edu.

#!/bin/bash
STATUS=`curl -s -o /dev/null -I -w '%{http_code}' http://example.com/`
if [ '$STATUS' != '200' ]
then
echo 'site appears to be down'
fi

4. Kettaruumi aruanded e -posti teel

Kui soovite muuta croni vaikimisi e -posti saatmist, võite kasutada MAILTO keskkonnamuutuja. Cron toetab mõningaid muutujaid, mida saate oma crontab -failis määrata. Seejärel rakendab Cron neid muutujaid iga järgneva käsu keskkonnale.

Alternatiivse siht -e -posti aadressi määramiseks kasutage järgmist vormingut:

MAILTO=user@example.com

Peate selle käivitama masinas, mis on seadistatud vajadusel väljast e -kirja saatma. Siin on näide, mis saadab meili teisele sama masina kasutajale. See sõidab kaks korda päevas, kell 12.00 ja 23.00. The df käsk kuvab vaba kettaruumi, nii et see crontab -kirje delegeerib ülesande kontrollida, kas kettaruum näeb välja korras:

MAILTO='sarah'
0 12,23 * * * /bin/df -h

Saadud e -kiri näeb välja umbes selline:

Pange tähele, et cron lisab oma kohandatud e -posti päised. Need võivad olla silumiseks kasulikud. Samuti saate tühja stringi abil keelata croni vaikimisi e -kirjade saatmise:

MAILTO=''

5. Sõnumi edastamine kindlatel kellaaegadel

Teised näited kasutavad üsna lihtsat ajastamist, kuid cron toetab aja spetsifikatsioonide jaoks võimsat süntaksit. See käsitleb mitte ainult täpseid vasteid, vaid ka järgmist:

  • Mitu väärtust eraldatakse komaga ( , )
  • Sidekriipsuga määratud vahemikud ( - )
  • Sammuväärtused pärast kaldkriipsu ( / )

Näiteks kui soovite saata sõnumi kõigile sisseloginud kasutajatele, siis tööajal kaks korda tunnis, kuid ainult iga kolme tunni tagant, piisab järgmisest:

0 15,45 9-17/3 ? * * * echo 'Enjoy your work!' | wall

See käsk täidetakse kell 15 ja 45 minutit pärast tundi, iga kolme tunni tagant kella 9–17. Seina käsk saadab sõnumi igale sisselogitud terminali kasutajale.

Võite isegi avastada, et cron pakub paindlikumat ajastamist kui teie kalendrirakendus. Mõned variatsioonid võimaldavad teil määrata käske, mida täita kuu teisel reedel või kindlale kuupäevale lähimal nädalapäeval.

Cron suudab automatiseerida mitut tüüpi Linuxi ülesandeid

See on väike valik selliseid ülesandeid, mida cron aitab teil automatiseerida. Keerulise süntaksiga tutvumiseks võib kuluda veidi aega, kuid cron on võimas utiliit. Saate kasutada croni nii kogu süsteemi hõlmavate ülesannete kui ka kasutajapõhiste ülesannete jaoks.

Planeerimise keeruka süntaksiga on cron võimas, kuid tõenäoliselt peaks teil olema hea viide. Crontabid lubavad kommenteerida, seega võiksite ajaväljade dokumenteerimiseks lisada oma kommentaaririda.

Jaga Jaga Piiksuma E -post Kuidas kasutada Crontabi korduvate ülesannete automatiseerimiseks Linuxis

Kas soovite säästa aega ja automatiseerida Linuxi võtmeprotsesse? Crontab on vastus.

Loe edasi
Seotud teemad
  • Linux
  • Arvuti automatiseerimine
  • Ülesannete automatiseerimine
  • Linuxi käsud
Autori kohta Bobby Jack(58 artiklit avaldatud)

Bobby on tehnoloogiahuviline, kes töötas enam kui kaks aastakümmet tarkvaraarendajana. Ta on kirglik mängude vastu, töötab ajakirja Switch Player ülevaadete toimetajana ning on süvenenud kõikidesse veebipõhiste avaldamise ja veebiarenduse aspektidesse.

kuidas arvutis Facebookis asukohta sisse lülitada
Veel Bobby Jackilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin