Cron & crontab, vysvětlil

Lucaine zveřejněna před chvílí vynikající návod na cron a crontab o kterém si myslím, že stojí za sdílení. Cron je druh ekvivalentu naplánovaných úkolů ve Windows, pouze to, že je zpracováváno z terminálu. Ti, kteří dávají přednost vizuálnímu rozhraní k dosažení stejného cíle, to mohou vidět další položka.

Co je to cron?

Název cron pochází z řeckého chronos, což znamená „čas“. V operačním systému Unix je cron běžným správcem procesů na pozadí (daemon), který spouští procesy nebo skripty v pravidelných intervalech (například každou minutu, den, týden nebo měsíc). Procesy, které musí být provedeny, a čas, kdy musí být provedeny, jsou uvedeny v souboru crontab.

COMO práce

Démon cron začíná od /etc/rc.d/ o /etc/init.d v závislosti na distribuci. Cron běží na pozadí a každou minutu kontroluje tabulku úloh crontab / etc / crontab nebo v / var / cívka / cron při hledání úkolů, které mají být splněny. Jako uživatel můžeme do cronu přidávat příkazy nebo skripty s úkoly k automatizaci některých procesů. To je užitečné například k automatizaci aktualizace systému nebo dobrého zálohovacího systému.

Související článek:
Výukový program: Nainstalujte si balíčky .tar.gz a .tar.bz2

Co je Crontab?

Crontab je jednoduchý textový soubor, který ukládá seznam příkazů, které mají být provedeny v době určené uživatelem. Crontab ověří datum a čas, kdy by měl být skript nebo příkaz proveden, oprávnění ke spuštění a provede to na pozadí. Každý uživatel může mít svůj vlastní soubor crontab, ve skutečnosti soubor / etc / crontab předpokládá se, že jde o soubor crontab uživatele root, když běžní uživatelé (a dokonce i root) chtějí vygenerovat vlastní soubor crontab, použijeme příkaz crontab.

Crontab je nejjednodušší způsob správy úloh cron na víceuživatelských systémech, ať už jako jednoduchý uživatel systému nebo root.

Používání crontabu

Začínáme s jednoduchým příkladem.

Chystáme se automatizovat aktualizaci systému, abychom odstranili nepříjemné „Vždy musím aktualizovat a to se mi nelíbí!“

jak
Související článek:
Příkazy pro poznání systému (identifikace hardwaru a některých softwarových konfigurací)

Nejprve vytvoříme scénář. Tento skript bude volán cronem a bude obsahovat všechny pokyny, které od něj chceme udělat, proto je nutné jej v několika případech a několika způsoby otestovat, než jej do cronu zahrnete, jednoduchý aktualizační skript, jako je tento:

#! / bin / bash # příklad aktualizace skriptu # vyberte svou distribuci # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Odstraňte # z vaší distribuční linky. V případě, že jde o Ubuntu / Debian, začíná apt-get.

Skript uložíme jako update.sh (např. Adresář skriptů doma). Oprávnění ke spuštění uvedeného skriptu změníme pomocí:

chmod a + x ~ / scripts / update.sh

Skript provedeme několikrát, abychom ověřili, že vše běží hladce, upravíme, co je nutné (nesmí obsahovat chyby, jinak cron chybu opakuje pouze znovu a znovu). Nyní přidejte úkol do naší crontabu.

Přidejte úkoly na crontab

Vydání crontabu provádíme s crontab -e, v některých distribucích (jako je Ubuntu) nám dává možnost zvolit si požadovaný textový editor, zbytek nám zůstane vi. Soubor crontab bude vypadat asi takto.

# mh dom mon dow uživatelský příkaz

kde:

  • m odpovídá minutě, kdy bude skript spuštěn, hodnota se pohybuje od 0 do 59
  • h přesný čas je zpracován 24hodinový formát, hodnoty se pohybují od 0 do 23, přičemž 0 je půlnoc 12:00.
  • dom odkazuje na den v měsíci, například můžete zadat 15, pokud chcete spustit každých 15 dní
  • dow znamená den v týdnu, může to být číslice (0 až 7, kde 0 a 7 jsou neděle) nebo první 3 písmena dne v angličtině: po, út, st, čt, pá, so, slunce.
  • uživatel definuje uživatele, který provede příkaz, může to být root nebo jiný uživatel, pokud má oprávnění k provádění skriptu.
  • příkaz odkazuje na příkaz nebo absolutní cestu ke skriptu, který má být proveden, příklad: /home/usuario/scripts/update.sh, pokud volá skript, musí být spustitelný

Aby bylo jasné, vysvětlíme několik příkladů úkolů cron:

15 10 * * * uživatel /home/user/scripts/update.sh

Spustí skript update.sh každý den v 10:15

15 22 * * * uživatel /home/user/scripts/update.sh

Spustí skript update.sh každý den v 10:15

00 10 * * 0 root apt-get -y update Kořenový uživatel

Aktualizaci spustí každou neděli v 10:00

45 10 * * aktualizace Sun root apt-get -y

Kořenový uživatel spustí aktualizaci každou neděli (ne) v 10:45

30 7 20 11 * uživatel /home/usuario/scripts/update.sh

20. listopadu v 7:30 spustí uživatel skript

30 7 11 11 uživatel slunce /home/usuario/scripts/pastel_con_velitas.sh

11. listopadu v 7:30 a to je neděle, bude uživatel oslavovat svého sysadmina (tedy mě)

01 * * * * uživatel /home/usuario/scripts/molestorecordatorio.sh

Nepríjemné připomenutí každou minutu každou hodinu každý den (NENÍ doporučeno).

Stále se s nimi dá manipulovat speciální rozsahy:

30 17 * * 1,2,3,4,5

V 5:30 odpoledne každý den od pondělí do pátku.

00 12 1,15,28 * *

V 12 hodin každý první, patnáctý a 28. každý měsíc (ideální pro výplatu)

Pokud je to matoucí, zpracovává to crontab speciální řetězce k definování těchto rozsahů.

@reboot Spustit jednou, při spuštění
@rok běží pouze jednou za rok: 0 0 1 1 *
@ ročně stejné jako @rok
@měsíčně běží jednou za měsíc, první den: 0 0 1 * *
@týden týdně první minuta první hodiny týdne. 0 0 * * 0 ″.
@ denně každý den, ve 12:00 0 0 * * *
@ půlnoc stejné jako @ denně
@hodina v první minutě každé hodiny: 0 * * * *

Jeho použití je velmi jednoduché.

@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

V neposlední řadě:

Správa úloh Cron

soubor crontab

Nahraďte existující soubor crontab souborem definovaným uživatelem

crontab -e

Upravte soubor crontab uživatele, každý nový řádek bude novým úkolem crontab.

crontab -l

Seznam všech úkolů uživatele crontab

crontab -d

Odstraňte uživatelskou crontab

crontab -c dir

Definuje adresář uživatele crontab (musí mít oprávnění pro zápis a spuštění uživatele)

crontab -u uživatel

předpona pro zpracování crontabu jiného uživatele, příklady:

$ sudo crontab -l -u root $ sudo crontab -e uživatel2 #crontab -d -u uživatel

Tento nástroj, stejně jako mnoho dalších, lze vidět hlouběji a podrobněji v:

Díky Lucaine!