Подробный гайд: установка и настройка cron в Astra Linux
cron — стандартный демон планировщика задач в Linux. В Astra Linux (как и в других Debian-подобных дистрибутивах) он обычно предустановлен, но в зависимости от редакции (Общего или Специального назначения) может потребоваться установка, активация или дополнительная настройка безопасности.
Шаг 1. Проверка установки и установка при необходимости
1.1 Проверка наличия пакета
dpkg -l | grep ^ii | grep cron
Если в выводе есть строка с cron или cron-daemon, пакет установлен.
1.2 Установка (если отсутствует)
sudo apt update
sudo apt install cron
В Astra Linux Special Edition (СН) пакет
cronобычно предустановлен. Если система отказывается устанавливать пакеты, проверьте настройки репозиториев и цифровую подпись (apt-keyилиdpkg --verify).
Шаг 2. Активация и запуск службы
Astra Linux использует systemd.
Управляем демоном стандартными командами:
# Включить автозагрузку при старте системы
sudo systemctl enable cron
# Запустить службу
sudo systemctl start cron
# Проверить статус
sudo systemctl status cron
Ожидаемый вывод: Active: active (running).
Если статус
maskedилиfailed, проверьте логи:journalctl -u cron --no-pager -n 50
Шаг 3. Структура и синтаксис cron
3.1 Расположение конфигураций
| Тип задач | Путь | Особенность |
|---|---|---|
| Пользовательские | crontab -e |
Хранятся в /var/spool/cron/crontabs/ |
| Системные (от имени root) | /etc/crontab |
Явное указание пользователя в 6-м поле |
| Сторонние/пакетные | /etc/cron.d/ |
Формат как у /etc/crontab |
| Периодические скрипты | /etc/cron.{hourly,daily,weekly,monthly}/ |
Запускаются run-parts |
3.2 Синтаксис строки расписания
* * * * * /путь/к/команде
│ │ │ │ │
│ │ │ │ └── День недели (0-7, 0 и 7 = воскресенье)
│ │ │ └──── Месяц (1-12)
│ │ └────── День месяца (1-31)
│ └──────── Час (0-23)
└────────── Минута (0-59)
Спецсимволы:
*— любое значение,— перечисление (1,15,30)-— диапазон (1-5)/— шаг (*/10= каждые 10 минут)
3.3 Примеры
# Каждый день в 02:30
30 2 * * * /opt/backup/daily.sh
# Каждые 15 минут
*/15 * * * * /usr/local/bin/check_service.sh
# Только по будням в 10:00
0 10 * * 1-5 /scripts/weekday_task.sh
# Первое число каждого месяца в 00:00
0 0 1 * * /scripts/monthly_cleanup.sh
Шаг 4. Создание и редактирование задач
4.1 Пользовательский crontab
crontab -e
При первом запуске предложит выбрать редактор. Рекомендуется nano или vim.
Для редактирования
root-crontab:sudo crontab -e
4.2 Системный crontab (/etc/cron.d/)
Создайте файл с правами 644 и владельцем root:root:
sudo nano /etc/cron.d/my-task
Пример содержимого:
# Запуск от имени пользователя appuser каждые 5 минут
*/5 * * * * appuser /opt/app/sync.sh >> /var/log/app/sync.log 2>&1
В
/etc/cron.d/обязательно указывать пользователя (6-е поле). Файлы должны заканчиваться переводом строки, иначе последняя задача проигнорируется.
4.3 Проверка текущих задач
crontab -l # текущий пользователь
sudo crontab -l # root
cat /etc/cron.d/* # системные
Шаг 5. Логирование и отладка
5.1 Просмотр логов
# Через systemd (рекомендуется)
journalctl -u cron --since "today" --no-pager
# Классический syslog (если установлен rsyslog)
grep CRON /var/log/syslog | tail -20
5.2 Типичные ошибки и решения
| Симптом | Причина | Решение |
|---|---|---|
| Задача не запускается | Относительные пути | Всегда используйте абсолютные пути к бинарникам и скриптам |
Ошибка command not found |
Минимальный PATH в cron |
Укажите PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin в начале crontab |
| Скрипт работает вручную, но не в cron | Разное окружение | Перенаправляйте вывод: >> /tmp/cron_debug.log 2>&1 |
Permission denied |
Неправильные права или SELinux/Parsec | chmod +x, проверьте метки безопасности (см. ниже) |
Шаг 6. Особенности Astra Linux (Специальное назначение)
В Astra Linux Special Edition действует мандатный контроль доступа (Парсек / pdpl). Это влияет на cron следующим образом:
6.1 Метки безопасности и cron
- Демон
cronзапускается в контекстеsysadm_r:sysadm_tили аналогичном системном. - Задачи от обычных пользователей наследуют их мандатную метку. Если скрипт требует доступа к ресурсам с более высокой категорией/целостностью, выполнение будет заблокировано.
- Проверка блокировок:
sudo grep -i "cron\|pdpl\|denied" /var/log/audit/audit.log | tail -20
- Решение: Либо понизьте требования скрипта, либо настройте правила Парсек (
pdpl-admin), либо запускайте задачу отroot/sysadmс корректными привилегиями.
6.2 Ограничение пользователей
Файлы /etc/cron.allow и /etc/cron.deny управляют доступом к crontab. В Astra SE по умолчанию может быть активен строгий контроль.
# Разрешить только конкретным пользователям
echo "ivanov" | sudo tee /etc/cron.allow
echo "petrov" | sudo tee -a /etc/cron.allow
sudo rm -f /etc/cron.deny # удалить, если существует
6.3 Аудит и соответствие ФСТЭК
- Включите аудит выполнения cron-задач в /etc/audit/rules.d/:
-w /var/spool/cron/crontabs/ -p wa -k cron_changes
-w /etc/cron.d/ -p wa -k cron_system
- Перезагрузите правила:
sudo augenrules --load
Лучшие практики
- Всегда используйте абсолютные пути к исполняемым файлам, скриптам и логам.
- Добавляйте логирование:
>> /var/log/mytask.log 2>&1 - Тестируйте задачи вручную от имени того пользователя, под которым они будут запускаться:
sudo -u username /path/to/script.sh - Избегайте
@rebootдля критичных задач — в Astra SE загрузка может зависеть от политики безопасности, иcronстартует позже. Используйтеsystemd-таймеры для гарантийного запуска.
5. Резервное копирование crontab:
crontab -l > ~/cron-backup-$(date +%F).txt
- Для систем, которые не работают 24/7, рассмотрите
anacron(sudo apt install anacron) — он выполняет пропущенные задачи при включении.
Чек-лист проверки работоспособности
- [ ]
systemctl is-active cron→active - [ ]
crontab -lвыводит задачи без синтаксических ошибок - [ ] Тестовая задача (
* * * * * date >> /tmp/cron_test.log) создаёт файл и пишет вывод - [ ] В
journalctl -u cronнет ошибокERRORилиDENIED - [ ] Файлы скриптов имеют
chmod +xи корректные права владельца - [ ] В Astra SE:
audit.logне содержит блокировок поpdplдля ваших задач