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.