Vyhledávání na webu

Cron vs Anacron: Jak naplánovat úlohy pomocí Anacronu na Linuxu


V tomto článku vysvětlíme cron a anacron a také vám ukážeme, jak nastavit anacron na Linuxu. Budeme se také zabývat srovnáním těchto dvou utilit.

Chcete-li naplánovat úlohu na daný nebo pozdější čas, můžete použít příkazy 'at' nebo 'batch' a pro nastavení příkazů tak, aby se spouštěly opakovaně, můžete použít < zařízenícron a anacron.

Cron – je démon používaný ke spouštění naplánovaných úloh, jako jsou zálohy systému, aktualizace a mnoho dalších. Je vhodný pro spouštění naplánovaných úloh na počítačích, které poběží nepřetržitě 24 hodin denně, 7 dní v týdnu, jako jsou servery.

Příkazy/úlohy jsou zapsány do úloh cron, které jsou naplánovány v souborech crontab. Výchozí systémový soubor crontab je /etc/crontab, ale každý uživatel si také může vytvořit svůj vlastní soubor crontab, který může spouštět příkazy v časech, které uživatel definuje.

Chcete-li vytvořit osobní soubor crontab, jednoduše zadejte následující:

crontab -e

Jak nastavit Anacron v Linuxu

Anacron se používá k pravidelnému spouštění příkazů s frekvencí definovanou ve dnech. Funguje trochu jinak než cron; předpokládá, že stroj nebude neustále zapnutý.

Je vhodný pro spouštění denních, týdenních a měsíčních plánovaných úloh, které normálně spouští cron, na počítačích, které nebudou běžet 24 hodin denně, 7 dní v týdnu, jako jsou notebooky a stolní počítače.

Za předpokladu, že máte naplánovanou úlohu (například zálohovací skript), která se má spouštět pomocí cronu každou půlnoc, případně když spíte, a váš desktop/notebook je v tu dobu vypnutý. Váš záložní skript nebude spuštěn.

Pokud však používáte anacron, můžete si být jisti, že až příště znovu zapnete stolní/laptop, zálohovací skript se spustí.

Jak Anacron funguje v Linuxu

Úlohy anacrontu jsou uvedeny v /etc/anacrontab a úlohy lze naplánovat pomocí níže uvedeného formátu (komentáře v souboru anacrontab musí začínat #).

period   delay   job-identifier   command

Z výše uvedeného formátu:

  • období – toto je frekvence provádění úlohy zadaná ve dnech nebo jako @denně, @týdně nebo @měsíčně jednou za den, týden nebo měsíc. Můžete také použít čísla: 1 – denně, 7 – týdně, 30 – měsíčně a N – počet dní.
  • zpoždění – počet minut čekání před provedením úlohy.
  • job-id – je to charakteristický název pro úlohu zapsanou v souborech protokolu.

Chcete-li zobrazit ukázkové soubory, zadejte:

ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • příkaz – je to příkaz nebo skript shellu, který se má provést.
Prakticky se děje toto:
  • Anacron zkontroluje, zda byla úloha provedena během zadaného období v poli období. Pokud ne, provede příkaz zadaný v poli příkazu po čekání na počet minut zadaný v poli zpoždění.
  • Po provedení úlohy zaznamená datum do souboru časového razítka v adresáři /var/spool/anacron s názvem uvedeným v poli job-id (název souboru časového razítka).

Podívejme se nyní na příklad. Toto bude každý den spouštět skript /home/aaronkilik/bin/backup.sh:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

Pokud je počítač vypnutý, když se očekává spuštění úlohy backup.sh, anacron ji spustí 10 minut po zapnutí počítače, aniž by musel čekat dalších 7 dní.

V souboru anacrontab jsou dvě důležité proměnné, kterým byste měli rozumět:

  • START_HOURS_RANGE – nastavuje časové rozmezí, ve kterém budou úlohy spuštěny (tj. provádět úlohy pouze během následujících hodin).
  • RANDOM_DELAY – definuje maximální náhodné zpoždění přidané k uživatelem definovanému zpoždění úlohy (ve výchozím nastavení je to 45).

Takto by mohl vypadat váš soubor anacrontab.

/etc/anacrontab: configuration file for anacron

See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

Následuje srovnání cronu a anacronu, které vám pomůže pochopit, kdy použít kterýkoli z nich.

It’s a daemon

Není to démon

Appropriate for server machines

Vhodné pro stolní počítače/notebooky

Enables you to run scheduled jobs every minute

Umožňuje pouze spouštět naplánované úlohy na denní bázi

Doesn’t executed a scheduled job when the machine if off

Pokud je stroj vypnutý, když má být naplánovaná úloha, provede naplánovanou úlohu při příštím zapnutí stroje

Can be used by both normal users and root

Může být použit pouze rootem, pokud není jinak (povoleno pro normální uživatele se specifickými konfiguracemi)

Hlavní rozdíl mezi cronem a anacronem spočívá v tom, že cron funguje efektivně na počítačích, které poběží nepřetržitě, zatímco je určen anacron pro stroje, které budou vypnuty za den nebo týden.

Pokud znáte jiný způsob, podělte se s námi pomocí formuláře níže.