Подробный гайд по настройке, использованию и отладке планировщика заданий в Astra Linux
Astra Linux базируется на Debian, поэтому в ней используются стандартные для Linux инструменты планирования заданий: cron (классический) и systemd timers (современный). Однако, в зависимости от редакции (Common Edition или Special Edition) и уровня безопасности, есть важные нюансы.
1. Cron (Классический планировщик)
cron — это демон, который выполняет команды по расписанию. Это самый распространенный способ.
1.1. Работа с пользовательскими задачами
Чтобы настроить расписание для текущего пользователя:
crontab -e
При первом запуске предложит выбрать редактор (рекомендуется nano).
Синтаксис строки:
* * * * * команда_выполнения
│ │ │ │ │
│ │ │ │ └── День недели (0-7, где 0 и 7 — воскресенье)
│ │ │ └──── Месяц (1-12)
│ │ └────── День месяца (1-31)
│ └──────── Час (0-23)
└────────── Минута (0-59)
Примеры:
1. Запускать скрипт каждый день в 3:00 ночи:
0 3 * * * /opt/scripts/backup.sh
2. Запускать каждые 15 минут:
*/15 * * * * /opt/scripts/check_status.sh
3. Запускать только по будням в 9:00:
0 9 * * 1-5 /opt/scripts/report.sh
1.2. Системные задачи (для всех пользователей)
Файлы находятся в /etc/cron.d/. Удобно для настройки задач от имени разных пользователей (например, root).
Пример файла /etc/cron.d/my_task:
# Формат: минута час день месяц день_недели пользователь команда
30 2 * * * root /opt/scripts/system_update.sh
Важно:
В файлах /etc/cron.d/ обязательно указывать имя пользователя.
1.3. Специальные директории
В Astra Linux (как и в Debian) есть папки для периодического запуска скриптов без сложного синтаксиса:
- /etc/cron.hourly/ — каждый час.
- /etc/cron.daily/ — каждый день.
- /etc/cron.weekly/ — каждую неделю.
- /etc/cron.monthly/ — каждый месяц.
Просто положите исполняемый скрипт в нужную папку, и он будет запущен автоматически.
2. Systemd Timers (Современный подход)
systemd предлагает более гибкое управление задачами: логирование, зависимости сервисов, точное расписание.
2.1. Структура
Для одной задачи нужно создать два файла в /etc/systemd/system/:
- .service — описывает, что делать.
- .timer — описывает, когда делать.
2.2. Пример настройки (Резервное копирование)
Шаг 1. Создаем сервис (/etc/systemd/system/backup.service):
[Unit]
Description=Backup Script Service
[Service]
Type=oneshot
ExecStart=/opt/scripts/backup.sh
User=root
Шаг 2. Создаем таймер (/etc/systemd/system/backup.timer):
[Unit]
Description=Run Backup Daily at 3:00 AM
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
Persistent=true означает, что если система была выключена в время запуска, задача выполнится сразу после включения.
Шаг 3. Активация:
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
Шаг 4. Проверка:
systemctl list-timers --all
3. Особенности Astra Linux
3.1. Безопасность (Parsec / Мандатный контроль)
Если вы используете Astra Linux Special Edition (SE) с включенным режимом усиленной защиты (УЗ):
- Метки безопасности: Скрипты, запускаемые через cron, наследуют контекст безопасности пользователя. Если скрипт пытается читать файлы с более высокой меткой, доступ будет заблокирован.
- Запуск от root: В режиме УЗ прямой вход под root часто запрещен. Используйте sudo или настройте задачи через systemd с указанием пользователя, имеющего необходимые привилегии.
3. Исполняемость: Убедитесь, что у скриптов есть права на выполнение:
chmod +x /opt/scripts/script.sh
3.2. Логирование
В Astra Linux логи планировщика можно найти в двух местах:
1. Для Cron:
grep CRON /var/log/syslog
# или
grep CRON /var/log/cron.log (если включено в rsyslog)
2. Для Systemd:
journalctl -u backup.service
journalctl -u backup.timer
4. Частые проблемы и решения
Проблема:
Скрипт работает вручную, но не в cron
Причина:
Отсутствуют переменные окружения (PATH)
Решение:
Используйте полные пути к командам (например, /usr/bin/rsync вместо rsync) или укажите PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin в начале crontab.
Проблема:
Permission denied
Причина:
Нет прав на выполнение или доступ к файлам
Решение:
chmod +x script.sh, проверьте владельца файлов. В Astra SE проверьте мандатные метки.
Проблема:
Задача не запускается в Astra SE
Причина:
Блокировка механизмом защиты (Parsec)
Решение:
Проверьте /var/log/parsec/audit.log. Возможно, нужно изменить контекст безопасности скрипта или запустить его в домене с более высокими привилегиями.
Проблема:
Нет вывода скрипта
Причина:
Cron не отправляет вывод на терминал
Решение:
Перенаправьте вывод в файл: 0 3 * * * /script.sh >> /var/log/script.log 2>&1.
5. Графический интерфейс (GUI)
В Astra Linux Common Edition (с рабочим столом Fly) может быть доступен графический инструмент:
- Откройте меню Пуск.
- Найдите раздел Системные -> Планировщик заданий (иногда называется kcron или аналог).
3. Если его нет, его можно установить (в репозиториях CE):
sudo apt install kcron
Примечание:
В Special Edition графические утилиты часто ограничены в целях безопасности, поэтому рекомендуется использовать командную строку (CLI), описанную выше.
6. Чек-лист
- Определите тип задачи: Разовая (at) или регулярная (cron/systemd).
- Выберите инструмент: Для простых задач — cron, для сложных с зависимостями — systemd timers.
- Пути: Всегда пишите полные пути к скриптам и утилитам.
- Логи: Настройте логирование вывода скрипта, чтобы отлавливать ошибки.
- Безопасность: В Astra SE проверьте, не блокирует ли выполнение задача система мандатного контроля.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.