Подробный гайд: редактирование cron в Astra Linux
cron — стандартный демон для автоматического выполнения команд и скриптов по расписанию. В Astra Linux (Common Edition «Орёл» и Special Edition «Смоленск») он работает на базе Debian, но имеет ряд нюансов, связанных с системой мандатного контроля доступа (Parsec). Ниже приведён полный алгоритм работы.
1. Проверка и запуск службы cron
Перед редактированием убедитесь, что демон активен:
systemctl status cron
Если служба неактивна или остановлена:
sudo systemctl enable --now cron
2. Как открыть crontab для редактирования
Для текущего пользователя
crontab -e
Откроет персональный файл расписания в текстовом редакторе по умолчанию.
Для другого пользователя (требуются права sudo)
sudo crontab -u <имя_пользователя> -e
Внимание:
Не используйте прямой вызов sudo crontab -e без -u, если хотите отредактировать расписание не root.
Системный crontab (/etc/crontab)
sudo nano /etc/crontab
Важно:
В этом файле обязательно указывается пользователь (6-е поле), в отличие от пользовательских crontab.
Альтернативные директории
/etc/cron.d/— для пакетов и системных задач (синтаксис как у/etc/crontab)/etc/cron.daily/,hourly/,weekly/,monthly/— скрипты, запускаемые автоматически
3. Синтаксис cron-выражений
Формат пользовательского crontab:
* * * * * команда_или_скрипт
│ │ │ │ │
│ │ │ │ └── День недели (0–7, 0 и 7 = воскресенье)
│ │ │ └──── Месяц (1–12)
│ │ └────── День месяца (1–31)
│ └──────── Час (0–23)
└────────── Минута (0–59)
Примеры
| Выражение | Описание |
|---|---|
0 2 * * * |
Ежедневно в 02:00 |
*/15 * * * * |
Каждые 15 минут |
0 9-18 * * 1-5 |
С 09:00 до 18:00, пн–пт |
0 0 1 * * |
Первого числа каждого месяца в полночь |
@reboot |
При загрузке системы |
@daily / @hourly / @weekly |
Псевдонимы |
Важно: cron использует минимальный PATH.
Всегда указывайте полные пути к исполняемым файлам или задайте переменную в начале crontab:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
4. Полезные команды
| Команда | Описание |
|---|---|
crontab -l |
Показать текущие задачи пользователя |
crontab -l > ~/cron_backup.txt |
Сохранить резервную копию |
crontab -r |
Удалить все задачи (используйте с осторожностью!) |
sudo systemctl restart cron |
Перезапустить демон |
journalctl -u cron -f |
Логи cron в реальном времени |
grep CRON /var/log/syslog | tail -20 |
Последние записи cron |
5. Особенности Astra Linux
Мандатный контроль доступа (Parsec / MAC)
В Astra Linux Special Edition включён строгий контроль доступа.
Задачи cron могут блокироваться, если:
- Скрипт или его каталог имеют несоответствующую метку безопасности
- Процессу не разрешён доступ к файлам/портам по политике
Проверка блокировок:
journalctl -u cron | grep -iE "parsec|mac|denied|blocked"
dmesg | grep -i parsec
Если задача не запускается без видимых ошибок, временно отключите MAC для теста:
sudo pdpl-disable # только в отладочных целях!
Для корректной работы задайте метку безопасности файлу:
sudo chpdpl -l <уровень>:<категория> /путь/к/скрипту
Редактор по умолчанию
Если crontab -e открывает неудобный редактор, смените его:
export EDITOR=nano # для текущей сессии
sudo update-alternatives --config editor # системно
Ограничения доступа к cron
Файлы /etc/cron.allow и /etc/cron.deny управляют, кто может использовать crontab. Если cron.allow существует, доступ разрешён только указанным в нём пользователям.
6. Траблшутинг: если задача не запускается
- Проверьте логи:
journalctl -u cron --since "10 min ago" - Убедитесь в полных путях:
cronне наследуетPATHиз~/.bashrc - Права на скрипт:
chmod +x /путь/к/скрипту.sh - Запуск от нужного пользователя: в
/etc/crontabилиcron.d/6-е поле должно совпадать с владельцем файлов - Система безопасности Astra: проверьте
pdpl-info /путь/к/скриптуи логиparsec - Проверьте синтаксис:
crontab -eвалидирует файл при сохранении, но опечатки в командах не ловит - Тестовый запуск: запустите команду вручную от того же пользователя, от которого работает cron
7. Рекомендации
- Всегда делайте бэкап:
crontab -l > ~/crontab_$(date +%F).bak - Перенаправляйте вывод в лог:
*/5 * * * * /opt/script.sh >> /var/log/my_script.log 2>&1 - В Astra Linux SE рассмотрите миграцию на
systemd timersдля сложных расписаний (лучше интеграция с журналом, зависимостями и MAC) - Не редактируйте
/etc/crontabи/etc/cron.d/*без необходимости; предпочитайтеcrontab -eдля пользовательских задач