Данная статья связана с
Данная статья применима к
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5) (частично)
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
- Astra Linux Common Edition 2.12
Аннотация
Cron запускается один раз при загрузке системы. Редактирование списка заданий рекомендуется выполнять при помощи команды:
sudo crontab -e
Управление возможно из графического интерфейса : Пуск → Панель управления → Система → Планировщик задач.
Systemd оперирует специально оформленными файлами конфигурации— юнитами (unit). Каждый юнит отвечает за конкретную службу (*.service), точку монтирования (*.mount), устройство (*.device), файл подкачки (*.swap), сокет (*.socket) и т. д. Юниты systemd имеют фиксированный набор параметров, оформленных в виде параметров команды systemctl (start, stop, reload, restart и т.д.).
Различия таймеров и заданий cron
Основные причины для применения таймеров вместо заданий cron :
Для каждого таймера создается отдельный файл журнала
journalctl
Создание таймеров
По умолчанию файлы с юнитами , включая юниты с таймерами, распологаются в каталоге /etc/systemd/system. Файл с юнитом таймера имеет ссылку на файл с юнитом службы
Общая структура юнитов служб:
[Unit] Description= # имя и описание службы [Service] ExecStart=/usr/local/bin/<имя файла или сценария> # примеры выполняемой команды
Общая структура юнитов таймеров:
[Unit] Description = # имя и краткое описание таймера [Timer] <Событие срабатывания таймера> Persistent = true # выполнить немедленно после старта системы, если предыдущий запуск был пропущен AccuracySec= 1h #точность выполнения таймера. # Параметр необходим для снижения нагрузки на ресурсы компьютера при одновременном запуске нескольких таймеров. # Таймеры будут запускаться в разные моменты времени в пределах указанного диапазона. Unit = # имя юнита запускаемой службы # необязательная для timer секция [Install] WantedBy = timers.target
Событие срабатывания таймера
Таймеры реального времени
.... [Timer] OnCalendar = DayOfWeek Year-Month-Day Hour:Minute:Second # параметр для задания таймера реального времени # вместо DayOfWeek указать Sun, Mon, Tue, Wed, Thu, Fri, Sat . Чтобы таймер выполнялся ежедневно, нужно не указывать параметр или указать Mon..Sun # вместо указания цифр для Year-Month-Day Hour:Minute:Second можно оставить * # Пример для запуска в каждый вечер пятницы: # OnCalendar = Fri *-*-* 18:00:00 # справка о формате времени - man 7 systemd.time ....
Монотонные таймеры
.... [Timer] <Событие> = <интервал> # Перечень событий: # OnActiveSec - старт текущего юнита таймера # OnBootSec - после загрузки ОС # OnStartupSec - после начала сеанса текущего пользователя # OnUnitActiveSec - при старте юнита службы # OnUnitInactiveSec - при завершении работы юнита службы # Пример: # OnActiveSec=50minutes ....
Перез запуском таймера необходимо перезагрузить systemd:
systemctl daemon-reloadИ проверить юниты на наличие синтаксических ошибок:
systemd-analyze verify Запуск таймера:
systemctl start <имя_таймера>Временное выполнение таймера
Чтобы инициировать таймер, который будет работать только пока существует текущий сеанс, выполнить:
sudo systemd-run --<событие>="время" --unit="название службы"Где:
--<событие> это одно из событий срабатывания таймера (см Монотонные таймеры):
--on-active--on-startup--on-unit-active--on-unit-inactive--on-calendar
Справка по systemd-run см. man 1 systemd-run
Управление таймерами
- получить список всех таймеров, определенных в системе:
systemctl list-timers --all - получить список активных таймеров:
systemctl list-timers - получить информацию о статусе конкретного таймера:
systemctl status <имя_таймера>.timerуказание
systemctl status *timerвыведет информацию обо всех таймерах, определенных в системе.
Пуск, автозапуск, перезапуск, останов, отключение аналогичны командам systemctl для служб. Справка доступна по команде man systemctl, краткая по systemctl -h
Просмотр журналов юнитов
Посмотреть записи журнала конкретного юнита:
sudo journalctl -b -u <имя_юнита> # .service или .timer, параметр -b ограничивает вывод записей текущей загрузкойЧтобы ограничить вывод записей определенным интервалом, используется параметры -S и -U (от и до), пример:
sudo journalctl -S "2024-11-03 07:00:00" -U "2024-11-07 07:15:00" -u anacron.timer # имя юнита для примера
Anacron это вспомогательный инструмент cron для запуска пропущенных cron во время отключения компьютера заданий. Anacron использует таймеры systemd. Следует различать параметры -u (юнит) и -U (до) инструмента или конретным интервалом (пример - день назад):
sudo journalctl -S -1d -u anacron.timerСправка для journalctl доступна по команде man , краткая справка по параметрам - journalctljournalctl -h