Cron & crontab, magyarázta

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.

Kapcsolódó cikk:
Oktatóanyag: Telepítse a .tar.gz és a .tar.bz2 csomagokat

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!"

hogyan kell
Kapcsolódó cikk:
Parancsok a rendszer ismeretéhez (hardver és néhány szoftverkonfiguráció azonosítása)

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ő:

Köszönöm Lucain!