Tutoriel Linux

Anacron v Linuxu: obnovení úlohy po vypnutí počítače

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Naplánujete zálohu na 2:00 ráno, ale notebook je v tu dobu vypnutý. U standardní cron úlohy se provedení jednoduše ztratí. anacron reaguje na tento konkrétní případ: spustí úlohu při dalším spuštění, jakmile si všimne, že její doba platnosti vypršela.

Vyhrazuji si ho pro denní, týdenní nebo měsíční úkoly, které tolerují zpoždění. Pro konkrétní čas je vhodnější spuštění každých deset minut nebo pokročilé monitorování podle oddělení, časovače cron a systemd.

Tux restartuje počítač a provádí plánovanou zálohu pomocí Anacronu.
Anacron provede odloženou úlohu při dalším spuštění, když vyprší její časový limit.

Výběr mezi cronem, anacronem a časovačem systemd

Volba závisí především na požadované přesnosti a době náběhu stroje:

  • cron vhodné pro stroj zapnutý v plánovaném čase a pro frekvence méně než jednou denně;
  • anacron pracuje ve dnech a po odpočinku dohání denní, týdenní nebo měsíční úkol;
  • A systemd časovač poskytuje přesnější harmonogram Trvalý=pravdazávislosti a protokoly přímo související se službou.

Anacron nenahrazuje cron všude. Nepokouší se spustit příkaz přesně v 8:30. Zkontroluje, zda uplynul zadaný počet dní, počká na nakonfigurované zpoždění, spustí příkaz a poté zaznamená datum. Čas posledního spuštění se při výpočtu nepoužívá.

Na pracovní stanici nebo malém serveru, který neběží nepřetržitě, to často stačí. Na serveru, který je již spravován pomocí systemd, viz příručka na systemd časovače nabízí flexibilnější řešení pro nový úkol.

Nainstalujte Anacron a přečtěte si existující konfiguraci

V Debianu nebo Ubuntu nainstalujte balíček a poté zkontrolujte dostupnou verzi:

aktualizace sudo apt
sudo apt install anacron
anacron -V

Ve Fedoře, Rocky Linuxu nebo AlmaLinuxu je implementace obvykle poskytována rodinou balíčků Cronie. Před jakoukoli úpravou zkontrolujte nainstalovaný balíček:

rpm -q cronie cronie-anacron
příkaz -v anacron

Dále zobrazte hlavní soubor bez jeho úprav:

sudo cat /etc/anacrontab
sudo ls -l /var/spool/anacron

První soubor popisuje úlohy. Druhé umístění obsahuje jejich časová razítka. V závislosti na distribuci může být anacron spuštěn cronem, službou systemd nebo při spuštění systému. Zkontrolujte, co skutečně existuje:

stav systemctl anacron.service --no-pager
systemctl list-timers --all | grep -i anacron
sudo grep -R "anacron" /etc/cron.d /etc/cron.* 2>/dev/null

Přidat denní úkol se zálohou

Začněte uložením konfigurace. Chyba v /etc/anacrontab může zabránit zohlednění následujících úkolů.

sudo cp /etc/anacrontab /etc/anacrontab.bak-$(datum +%F-%H%M)
sudo nano /etc/anacrontab

Například přidejte tento řádek pro volání záložního skriptu, který již byl otestován:

1 15 backup-home /usr/local/sbin/backup-home.sh >> /var/log/backup-home.log 2>&1

Každé ze čtyř polí má specifickou roli:

  • jeden definuje období jednoho dne;
  • patnáct přidává patnáctiminutové zpoždění po spuštění Anacronu;
  • záloha-domov je jedinečný identifikátor používaný pro časové razítko a protokolování;
  • Poslední pole obsahuje kompletní objednávku.

Ve skriptu používejte absolutní cesty. Prostředí naplánované úlohy se liší od vaší interaktivní relace. Před jakoukoli kopií také ověřte, zda je cílový disk připojen. Záloha, která omylem zapíše do jednoduché lokální složky, může zaplnit kořenový oddíl, aniž by chránila jakákoli data.

Nejprve otestujte samotný skript. Musí být spustitelný, musí vytvářet očekávaný výsledek a v případě selhání vracet nenulový kód:

sudo test -x /usr/local/sbin/backup-home.sh
sudo /usr/local/sbin/backup-home.sh
echo $?

Absence výstupu s nulovým návratovým kódem znamená, že syntaxe je akceptována. Pouze k provedení úlohy záloha-domov bez čekání na uplynutí lhůty nebo období použijte:

sudo anacron -f -n -d záloha-domov

--vymazat nebo nevratnou operaci. Možnosti vynutí úlohu, zruší zpoždění a ponechají Anacron v popředí, aby zobrazil svou aktivitu.

Vyhledání podrobností o spuštění v protokolech a časovém razítku

Po testu nejprve zkontrolujte obchodní výsledek, například přítomnost a datum uložených souborů. Časové razítko Anacronu pouze potvrzuje, že příkaz byl spuštěn a dokončen.

sudo stat /var/spool/anacron/backup-home
sudo tail -n 80 /var/log/backup-home.log

V distribuci s jednotkou systemd viz také:

sudo journalctl -u anacron.service -n 80 --no-pager
sudo journalctl -t anacron -n 80 --no-pager

Pokud tyto příkazy zůstanou prázdné, často zkontrolujte cron log distribuce. /var/log/syslog na Debianu nebo Ubuntu a /var/log/cron o rodině RHEL. Průvodce po journalctl a protokoly spouštění pomáhají obnovit proces spouštění po spuštění.

Jeden důležitý detail, který je třeba poznamenat: Anacron zaznamenává datum dokončení příkazu, i když váš skript selhal. Nestává se systémem pro zotavení z chyb. Skript musí zaznamenat svůj výsledek, zkontrolovat své předpoklady a odeslat upozornění, pokud je úloha kritická.

Omezení, která je třeba znát před nahrazením úlohy cron

Nepoužívejte anacron pro úkol, který musí začít v určitou minutu. Jeho doba trvání se počítá ve dnech a zpoždění začíná spuštěním anacronu. Po několika dnech prostoje se každé zpožděné ID provede jednou, nikoli jednou za každý zmeškaný den.

Nepřesouvejte existující úlohu před identifikací jejího uživatele. /etc/anacrontab se obvykle zpracovává s oprávněními root. Příkaz zkopírovaný z crontabu uživatele pak může vytvořit soubory s nesprávným vlastníkem nebo přistupovat k datům, kterých by se neměl dotýkat.

Tam Manuální stránka Anacronu dokumentuje možnosti testování a provedení.

sudo apt update && sudo apt upgrade