В предишна статия Разказах ви за cron, системна програма, която изпълнява задачи автоматично в определено време. Сега ще видим как да автоматизираме задачи с Anacron. Анакрон ни позволява да преодолеем една от слабостите на Крон. Ако компютърът е изключен по времето, когато задачата е трябвало да бъде изпълнена, тя не се изпълнява отново, докато не настъпи следващият сезон и компютърът не бъде включен.
В случая с Анакрон, Когато компютърът се включи отново, той изпълнява задачите, които са били оставени в очакване.
Как да автоматизирате задачи с Anacron
Когато компютърът се стартира, Anacron проверява кога е била изпълнена дадена инструкция за последно и колко често е било казано, че трябва да бъде изпълнена. Точно както при Cron, списъкът със задачи се запазва в текстов файл, наречен доста неоригинален anacrontab. Но, има една важна разлика, В този случай датата се задава чрез установяване на ден, закъснение в минути, идентификатор на задачата и командата, която ще се изпълни.
Anacron проверява за всяка задача дали е била изпълнена в рамките на определен брой дни. Този брой дни е периодът, определен за тази работа. Ако не се е изпълнил, Anacron изчаква необходимия брой минути и го прави. След това запишете датата, която служи като индикация кога да го изпълните отново.
Можем да открием anacron по име или в пакета cronie в основните дистрибуции.
За да го стартираме, трябва да зададем следните параметри:
-F: Изпълнение на задачата, дори ако не е на посочената дата.
-или: Променя датата на задачите на текущия ден, но не ги изпълнява.
-с: Показва, че задачата се изпълнява, когато предишната приключи.
-н: Това е като използването на параметрите -fy
-q: Ако се използва с -d, това предотвратява показването на съобщения за грешки.
-T: Указва на Anacron къде да намери списъка със задачи.
-Т: Проверява настройките на списъка със задачи и показва съобщение за грешка, ако е необходимо.
-S Указва директорията, в която се съхраняват времевите марки.
Във файла Anacrontab трябва да добавим следните параметри
SHELL=/bin/bash: Указва, че Bash трябва да се използва като интерпретатор на команди.
ПОЩЕНСКИ ДО= След знака за равенство посочваме имейл адрес, на който да ни изпратим отчета за грешката. Въпреки че в настолните дистрибуции това не е необходимо.
ПЪТ=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin: Това ни позволява да не се налага да добавяме маршрута към всяка задача.
Синтаксисът за задачата Anacrontab е командата period delay job id, където:
период: Това е честотата, с която работата трябва да се извършва. Може да се обозначи като период (@daily, @weekly или @monthly за ден, седмица или месец) или с числа (1 за ден, 7 за седмица, 30 за месец и произволно число за произволен период от дни.
Закъснение: Това е времето, което трябва да се изчака преди стартиране. Изразява се в минути
Идентификационен номер на заданието: Това е име, присвоено на задачата, за да я разграничи от другите
Команда: Това е командата, която anacron трябва да изпълни в указаното време.
Също така трябва да създадем директория, за да изпълняваме различните задачи.
mkdir -p ~/.local/etc/anacrontab: ~/.local/etc/cron.daily ~/.local/etc/cron.weekly ~/.local/etc/cron.daily ~/.var/spool/anacron
Това създава директориите, където ще се запазват дневните, седмичните и месечните скриптове за изпълнение, както и отчетът за последното изпълнение на anacron.
За да му кажете да използва тези папки:
anacron -fn -t ~/.local/etc/anacrontab -S ~/.var/spool/anacron
Редактираме конфигурационния файл от терминала
nano ~/.local/etc/anacrontab
Добавяме тези редове:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Могат да се конфигурират две други променливи
START_HOURS_RANGE: За да се посочи, че задачите трябва да започват само в рамките на определен период от време.
RANDOM_DELAY: Задава максималното произволно забавяне
С това завършваме краткия си преглед на два полезни инструмента за команден ред за автоматизиране на задачи на нашите компютри. В по-късни статии ще видим, че има графични приложения, които също ни позволяват да правим същото.