Skip to content

Примеры использования в cron

Примеры настройки автоматизации команд через cron для различных задач.

Основы работы с cron

Формат crontab

┌───────────── минуты (0-59)
│ ┌───────────── часы (0-23)
│ │ ┌───────────── день месяца (1-31)
│ │ │ ┌───────────── месяц (1-12)
│ │ │ │ ┌───────────── день недели (0-7, 0 и 7 = воскресенье)
│ │ │ │ │
* * * * * команда для выполнения

Специальные строки

  • @reboot - при загрузке системы
  • @yearly или @annually - раз в год (0 0 1 1 *)
  • @monthly - раз в месяц (0 0 1 * *)
  • @weekly - раз в неделю (0 0 * * 0)
  • @daily или @midnight - раз в день (0 0 * * *)
  • @hourly - каждый час (0 * * * *)

Редактирование crontab

bash
# Редактировать crontab текущего пользователя
crontab -e

# Просмотреть текущий crontab
crontab -l

# Удалить crontab
crontab -r

Базовые примеры

Управление кешем

bash
# Ежедневная очистка кеша в 3:00
0 3 * * * cd /var/www/bitrix && php bitrix.php cache:clear

# Очистка кеша каталога каждые 6 часов
0 */6 * * * cd /var/www/bitrix && php bitrix.php cache:type:clear catalog

# Очистка кеша меню каждый час
0 * * * * cd /var/www/bitrix && php bitrix.php cache:type:clear menu

Запуск агентов

bash
# Запуск агентов каждые 5 минут
*/5 * * * * cd /var/www/bitrix && php bitrix.php agent:run

# Запуск агентов каталога каждые 15 минут
*/15 * * * * cd /var/www/bitrix && php bitrix.php agent:run --module=catalog

# Запуск критичных агентов каждые 2 минуты
*/2 * * * * cd /var/www/bitrix && php bitrix.php agent:run --module=main

Переиндексация поиска

bash
# Переиндексация поиска раз в неделю (воскресенье в 2:00)
0 2 * * 0 cd /var/www/bitrix && php bitrix.php search:reindex --full

# Быстрая переиндексация каждый день в 4:00
0 4 * * * cd /var/www/bitrix && php bitrix.php search:reindex

# С очисткой подсказок раз в месяц
0 3 1 * * cd /var/www/bitrix && php bitrix.php search:reindex --full --clear-suggest

Фасетные индексы

bash
# Пересоздание фасетных индексов каждую ночь в 4:00
0 4 * * * cd /var/www/bitrix && php bitrix.php iblock:facet-rebuild

# Обновление только конкретного инфоблока
0 5 * * * cd /var/www/bitrix && php bitrix.php iblock:facet-rebuild 1

Резервное копирование

Базовые стратегии

bash
# Полный ежедневный бэкап в 2:00
0 2 * * * cd /var/www/bitrix && php bitrix.php backup:create --name="daily_$(date +\%Y\%m\%d)"

# Бэкап только БД каждые 6 часов
0 */6 * * * cd /var/www/bitrix && php bitrix.php backup:create --skip-kernel --skip-public --name="db_$(date +\%Y\%m\%d_\%H)"

# Еженедельный полный бэкап (воскресенье в 1:00)
0 1 * * 0 cd /var/www/bitrix && php bitrix.php backup:create --name="weekly_full_$(date +\%Y\%m\%d)"

# Ежемесячный архивный бэкап (первое число месяца в 0:00)
0 0 1 * * cd /var/www/bitrix && php bitrix.php backup:create --name="monthly_$(date +\%Y\%m)"

Продвинутые стратегии

bash
# Чистый бэкап без логов и статистики
0 3 * * * cd /var/www/bitrix && php bitrix.php backup:create \
  --name="clean_$(date +\%Y\%m\%d)" \
  --skip-stat --skip-search --skip-log \
  --exclude-dir=/bitrix/cache \
  --exclude-dir=/upload/tmp \
  --exclude-mask="*.log"

# Быстрый минимальный бэкап для частого запуска
0 */4 * * * cd /var/www/bitrix && php bitrix.php backup:create \
  --name="minimal_$(date +\%Y\%m\%d_\%H)" \
  --skip-stat --skip-search \
  --max-file-size=5120 \
  --no-integrity-check

Мониторинг и диагностика

Мониторинг системы

bash
# Ежедневная проверка состояния БД
0 6 * * * cd /var/www/bitrix && php bitrix.php db:info -v >> /var/log/bitrix-db-check.log

# Еженедельный отчет по пользователям
0 10 * * 1 cd /var/www/bitrix && php bitrix.php user:list > /tmp/users.txt && \
  mail -s "Weekly Users Report" admin@example.com < /tmp/users.txt

# Ежедневная проверка агентов
0 7 * * * cd /var/www/bitrix && php bitrix.php agent:list --active >> /var/log/bitrix-agents.log

Проверка работоспособности

bash
# Проверка каждые 15 минут
*/15 * * * * cd /var/www/bitrix && \
  if ! php bitrix.php db:info >/dev/null 2>&1; then \
    echo "DB connection failed" | mail -s "Bitrix Alert" admin@example.com; \
  fi

Обслуживание и оптимизация

Очистка и оптимизация

bash
# Очистка старых логов раз в неделю
0 5 * * 0 find /var/www/bitrix/backup -name "*.tar.gz" -mtime +30 -delete

# Очистка tmp каждый день
0 4 * * * find /var/www/upload/tmp -type f -mtime +7 -delete

# Оптимизация таблиц БД раз в месяц
0 3 1 * * cd /var/www/bitrix && \
  mysql -u user -p'password' database -e "OPTIMIZE TABLE b_search_content, b_stat_session"

Обновления

bash
# Проверка обновлений каждый день в 8:00
0 8 * * * cd /var/www/bitrix && \
  php bitrix.php update:modules 2>&1 | \
  grep -i "available" && \
  echo "Updates available" | mail -s "Bitrix Updates" admin@example.com

# Автоматическое обновление языковых файлов раз в неделю
0 4 * * 1 cd /var/www/bitrix && php bitrix.php update:languages

Комплексные сценарии

Полное обслуживание сайта

bash
# Ночное обслуживание (каждый день в 3:00)
0 3 * * * cd /var/www/bitrix && \
  # Бэкап \
  php bitrix.php backup:create --name="daily_$(date +\%Y\%m\%d)" && \
  # Очистка кеша \
  php bitrix.php cache:clear && \
  # Переиндексация \
  php bitrix.php search:reindex && \
  # Фасетные индексы \
  php bitrix.php iblock:facet-rebuild && \
  # Отчет \
  echo "Maintenance completed" | mail -s "Daily Maintenance" admin@example.com

Дифференцированное расписание

bash
# Понедельник - полная очистка и индексация
0 2 * * 1 cd /var/www/bitrix && \
  php bitrix.php cache:clear && \
  php bitrix.php search:reindex --full

# Среда и пятница - частичная индексация
0 2 * * 3,5 cd /var/www/bitrix && \
  php bitrix.php search:reindex && \
  php bitrix.php iblock:facet-rebuild

# Воскресенье - полный бэкап и оптимизация
0 1 * * 0 cd /var/www/bitrix && \
  php bitrix.php backup:create --name="weekly_$(date +\%Y\%m\%d)" && \
  mysql -u user -p'password' database < /path/to/optimize.sql

Troubleshooting

Задачи не выполняются

Проблема: Cron-задачи не запускаются

Решения:

  1. Проверьте, что cron запущен:

    bash
    sudo systemctl status cron  # для Ubuntu/Debian
    sudo systemctl status crond  # для CentOS/RHEL
  2. Проверьте синтаксис crontab:

    bash
    crontab -l
  3. Проверьте логи cron:

    bash
    grep CRON /var/log/syslog  # Ubuntu/Debian
    tail -f /var/log/cron       # CentOS/RHEL
  4. Проверьте права доступа к скриптам

Команды работают вручную, но не в cron

Проблема: Команды успешно выполняются вручную, но не через cron

Решения:

  1. Используйте абсолютные пути:

    bash
    0 3 * * * /usr/bin/php /var/www/bitrix/bitrix.php cache:clear
  2. Явно укажите PATH:

    bash
    PATH=/usr/local/bin:/usr/bin:/bin
    0 3 * * * cd /var/www/bitrix && php bitrix.php cache:clear
  3. Убедитесь, что cd выполняется:

    bash
    0 3 * * * cd /var/www/bitrix && pwd >> /tmp/test.log && php bitrix.php cache:clear

Полезные советы

💡 Используйте абсолютные пути - всегда указывайте полные пути к файлам

💡 Логируйте всё - перенаправляйте вывод в логи для отладки

💡 Тестируйте вручную - перед добавлением в cron проверьте команду вручную

💡 Мониторьте выполнение - настройте алерты при сбоях

💡 Документируйте - добавляйте комментарии к cron-задачам

💡 Группируйте логически - объединяйте связанные задачи

💡 Используйте блокировки - предотвращайте параллельное выполнение

💡 Настройте уведомления - получайте email при ошибках

💡 Ротируйте логи - не забывайте удалять старые логи


Дополнительные инструменты

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

Для задач, которые должны выполняться даже если система была выключена:

bash
# /etc/anacrontab
1  5  daily-backup  cd /var/www/bitrix && php bitrix.php backup:create
7  10 weekly-full   cd /var/www/bitrix && php bitrix.php search:reindex --full

Централизованное управление (cron.d)

Создайте файл /etc/cron.d/bitrix:

bash
# /etc/cron.d/bitrix
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Агенты каждые 5 минут
*/5 * * * * www-data cd /var/www/bitrix && php bitrix.php agent:run

# Очистка кеша ежедневно в 3:00
0 3 * * * www-data cd /var/www/bitrix && php bitrix.php cache:clear

# Бэкап ежедневно в 2:00
0 2 * * * www-data cd /var/www/bitrix && php bitrix.php backup:create

Смотрите также

Документация BXMax CLI