Планирование задач

Основные планировщики

  • Наиболее распространенным планировщиком является cron

    • cron - демон, который запускает процессы на основании заданной регулярности

    • Работает с различными конфигурационными файлами, определяющими, когда процесс должен быть запущен

  • At используется для разовой задачи

  • Альтернативно можно использовать systemd таймеры

Описание cron

  • Пользовательские задачи для cron задаются командой crontab -e

    • Задается для того пользователя, из под которого запущен планировщик

  • Базовые параметры хранятся в /etc/cron.d

    • Устаревший путь - /etc/crontab, он более не используется

  • Cron оперирует скриптами, которые запускаются на принципах временного повторения (час, день, неделя, месяц)

[root@centos8 ~]# ls /etc/cron
cron.d/       cron.daily/   cron.deny     cron.hourly/  cron.monthly/ crontab       cron.weekly/
[root@centos8 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Описание anacron

  • Anacron - сервис, который связан с cron, и отслеживающий задачи, для которых не указано специфичное время

    • Anacron обрабатывает задачи в /etc/cron.{hourly,daily,weekly,monthly}

  • Настройки хранятся в /etc/anacrontab

Планирование с cron

  • Выбрать опцию для создания планировщика

    • Запустить через crontab -e

    • Создать cron файл в /etc/cron.d

  • Настроить необходимое время:

    • */ 10 4 11 12 1-5

      • минута (*/10)

      • час (4)

      • день месяца (11)

      • месяц (12)

      • день недели (1-5)

  • Cron не имеет STDOUT, любая такая команда приведет к ошибке

  • Документация по cron доступна в man 5 crontab

Systemd таймеры

  • Таймеры также выполняют задачи, которые может планировать cron

    • Получает все большее распространение, но cron все еще является стандартом

  • Документация доступна в:

    • man 7 systemd-timer для общей информации

    • man 7 systemd-time для спецификации форматов времени

  • Таймер сопровождается сервисом, который определяет как и что запускать

  • Запускать при необходимости нужно таймер, который уже будет ждать, когда нужно запустить сервис

Использование at

  • Для использования at необходим запущенный сервис atd

  • at <time> планирует задачу

    • Здесь же задаются параметры задачи в интерактивной оболочке

    • Ctrl+D закрывает оболочку

  • atq покажет список запланированных задач

  • atrm снимет задачи со списка

Управление временными файлами

  • Для управления временными файлами используетс служба systemd-tmpfiles

  • Директория /usr/lib/tmpfiles.d управляет настройками для создания, удаления и очистки временных файлов

  • Таймер systemd-tmpfiles-clean.timer может быть использован для автоматической очистки временных файлов

    • Он запускает systemd-tmpfiles-clean.service

    • Этот сервис в свою очередь запускает systemd-tmpfiles --clean

  • Файл /usr/lib/tmpfiles.d/tmp.conf содержит настройки для автоматической очистки

  • При изменении настроек необходимо скопировать файл в /etc/tmpfiles.d

    • После исполнить systemd-tmpfiles --clean etc/tmpfiles.d/tmp.conf для проверки на ошибки

  • tmp.conf содержит информацию о директориях для мониторинга, разрешениях на нее, владельцев и через сколько времени в отсутствии изменений удалять файлы

  • man tmpfiles.d содержит необходимую документацию

  • Важно не только правильно написать конфигурацию, но учитывать временные параметры в таймере systemd

Last updated

Was this helpful?