|
Lucaine tette közzé egy ideje kiváló bemutató a cronról és a crontab-ról hogy szerintem érdemes megosztani. A Cron egyfajta megfelelője az ütemezett feladatoknak a Windows rendszerben, csak azt, hogy a terminálról kezeljék. Azok, akik a vizuális felületet részesítik előnyben ugyanazon cél elérése érdekében, láthatják ezt egy másik cikk. |
Mi a cron?
A cron név a görög chronos-ból származik, ami "időt" jelent. A Unix operációs rendszerben a cron egy szokásos háttérfolyamat-kezelő (démon), amely rendszeres időközönként (például minden percben, napban, hétben vagy hónapban) futtatja a folyamatokat vagy a parancsfájlokat. A végrehajtandó folyamatokat és a végrehajtás időpontját a crontab fájl határozza meg.
cómo munkák
A cron démon innen indul /etc/rc.d/ o /etc/init.d az eloszlástól függően. Cron fut a háttérben, percenként ellenőrzi a crontab feladattáblát / etc / crontab Az in / var / spool / cron az elvégzendő feladatok keresésére. Felhasználóként parancsokat vagy parancsfájlokat adhatunk feladatokhoz a cronhoz egyes folyamatok automatizálásához. Ez hasznos például egy rendszer vagy egy jó biztonsági másolat rendszerének frissítéséhez.
Mi a Crontab?
A Crontab egy egyszerű szöveges fájl, amely tárolja a végrehajtandó parancsok listáját a felhasználó által meghatározott időpontban. A Crontab ellenőrzi a parancs vagy a parancs futtatásának dátumát és időpontját, a végrehajtási engedélyeket, és a háttérben teszi. Minden felhasználónak megvan a saját crontab fájlja, valójában a / etc / crontab feltételezzük, hogy ez a root felhasználó crontab fájlja, amikor a normál felhasználók (és még a root is) saját crontab fájlt akarnak létrehozni, akkor a crontab parancsot fogjuk használni.
A Crontab a legegyszerűbb módszer a cron-feladatok kezelésére többfelhasználós rendszereken, akár egyszerű rendszerfelhasználóként, akár root felhasználóként.
A crontab használata
Egy egyszerű példával kezdünk.
Automatizálni fogjuk egy rendszer frissítését, hogy kiküszöböljük a bosszantó "mindig frissítenem kell, és ez nem tetszik!"
Először készítünk egy forgatókönyvet. Ezt a szkriptet a cron hívja meg, és tartalmazni fogja az összes utasítást, amelyet meg akarunk tenni, ezért több esetben és többféleképpen is tesztelni kell, mielőtt a cronba felvennénk, egy ilyen egyszerű frissítő szkript:
#! / bin / bash #script frissítési példa #választja a terjesztést # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Távolítsa el a # számot a disztribúciós sorból. Abban az esetben, ha ez az Ubuntu / Debian, az apt-get paranccsal kezdődik.
A szkriptet update.sh néven mentjük el (pl. A szkriptek az otthoni könyvtárat tárolják). Az említett parancsfájl végrehajtási engedélyeit a következőkkel módosítjuk:
chmod a + x ~ / scripts / update.sh
Néhányszor végrehajtjuk a szkriptet, hogy ellenőrizzük, hogy minden zökkenőmentesen működik-e, módosítjuk a szükségeset (nem tartalmazhat hibákat, különben a cron csak újra és újra megismétel egy hibát). Most adjuk hozzá a feladatot a crontab-hoz.
Feladatok hozzáadása a crontab-hoz
A crontab kiadását a crontab -e segítségével hajtjuk végre, egyes disztrókban (például az Ubuntuban) ez lehetőséget ad arra, hogy kiválasszuk a kívánt szövegszerkesztőt, a többi marad a vi. A crontab fájl ilyennek fog kinézni.
# mh dom mon dow felhasználói parancs
ahol:
- m a szkript végrehajtásának percének felel meg, az érték 0 és 59 között mozog
- h a pontos idő, a 24 órás formátum kezelése, az értékek 0 és 23 között változnak, a 0 pedig 12:00 éjfél.
- dom a hónap napjára utal, például megadhat 15-öt, ha 15 naponta szeretne futni
- dow a hét napját jelenti, lehet numerikus (0–7, ahol 0 és 7 vasárnap), vagy a nap első 3 betűje angolul: hétfő, kedd, sze, cs, péntek, szo, nap.
- használó meghatározza azt a felhasználót, aki végrehajtja a parancsot, lehet root vagy más felhasználó, amennyiben rendelkeznek engedéllyel a szkript végrehajtására.
- parancs a végrehajtandó parancs parancsára vagy abszolút elérési útjára utal, például: /home/usuario/scripts/update.sh, ha szkriptet hív, futtathatónak kell lennie
Hogy tisztázzunk néhány példát a kifejtett cron feladatokról:
15 10 * * * felhasználó /home/user/scripts/update.sh
Minden nap 10: 15-kor futtatja az update.sh parancsfájlt
15 22 * * * felhasználó /home/user/scripts/update.sh
Minden nap 10: 15-kor futtatja az update.sh parancsfájlt
00 10 * * 0 root apt-get -y frissítés Root felhasználó
Minden vasárnap 10:00 órakor frissítést futtat
45 10 * * sun root apt-get -y frissítés
A root felhasználó frissítést futtat minden vasárnap (vasárnap) 10: 45-kor
30 7 20 11 * felhasználó /home/usuario/scripts/update.sh
November 20-án 7: 30-kor a felhasználó futtatja a szkriptet
30 7 11 11 napfelhasználó /home/usuario/scripts/pastel_con_velitas.sh
November 11-én 7: 30-kor és vasárnap a felhasználó megünnepli a rendszergazdáját (vagyis engem)
01 * * * * felhasználó /home/usuario/scripts/molestorecordatorio.sh
Bosszantó emlékeztető minden nap minden órájának minden percében (NEM ajánlott).
Még kezelhetők speciális tartományok:
30 17 * * 1,2,3,4,5
Hétfőtől péntekig minden nap délután fél 5-kor.
00 12 1,15,28
Minden hónap első, tizenötödik és 12. napján 28 órakor (ideális bérszámfejtéshez)
Ha ez zavaró, akkor a crontab fogantyúkat speciális húrok e tartományok meghatározásához.
@reboot Futtasd egyszer, indításkor
@ évente csak évente egyszer fut: 0 0 1 1 *
@évente ugyanaz, mint @évesen
@havi havonta egyszer, az első napon: 0 0 1 * *
@weekly Weekly a hét első órájának első perce. 0 0 * * 0 ″.
@ naponta naponta, 12: 00-kor. 0 0 * * *
@ midnight ugyanaz, mint @daily
@ óránként minden óra első percében: 0 * * * *
Használata nagyon egyszerű.
@hourly felhasználó /home/user/scripts/molestorecordatorio.sh @havi felhasználónk /home/user/scripts/backup.sh @dain root
Végül, de nem utolsó sorban:
Cron munkakezelés
crontab fájl
Cserélje ki a meglévő crontab fájlt egy felhasználó által definiált fájlra
crontab -e
Szerkessze a felhasználó crontab fájlját, minden új sor új crontab feladat lesz.
crontab -l
Sorolja fel a felhasználó összes crontab feladatát
crontab -d
Törölje a felhasználó crontab-ját
crontab -c dir
Meghatározza a felhasználó crontab könyvtárát (ennek felhasználói írási és végrehajtási jogosultságokkal kell rendelkeznie)
crontab -u felhasználó
előtag egy másik felhasználó crontab-jának kezelésére, példák:
$ sudo crontab -l -u gyökér $ sudo crontab -e user2 #crontab -d -u felhasználó
Ez az eszköz, csakúgy, mint sok más, mélyebben és részletesebben megtekinthető: