Исправлена ​​ошибка, из-за которой задания Cron в Nextcloud не запускались автоматически при использовании systemd.

Чтобы фоновые задачи Nextcloud запускались автоматически с помощью systemd, настройте одноразовую службу, работающую cron.phpот имени пользователя веб-сервера, а затем включите таймер, который будет запускать эту службу каждые пять минут. Ключевые проверки: таймер включен и имеет время следующего запуска, служба указывает на правильные пути Nextcloud и PHP, а в журнале службы отображается успешное завершение. Одноразовая служба может отображаться как «неактивная (завершенная)» между запусками; это может быть нормальным явлением после ее завершения.

Данная настройка предназначена для стандартной установки Nextcloud на Ubuntu с использованием systemd, при этом файлы Nextcloud доступны на хосте. Если Nextcloud работает внутри Docker, Snap или устройства, такого как Nextcloud All-in-One, используйте описанный в этом дистрибутиве метод планировщика вместо указания хост-модулю пути, доступного только для контейнера. В приведенных ниже примерах используются /var/www/nextcloudи www-data; замените их реальным путем установки и HTTP-пользователем на вашем сервере.

Что должен делать таймер?

В Nextcloud cron.phpфоновые задачи, такие как техническое обслуживание и задачи приложений, запускаются по очереди. Таймер systemd — это часы; служба — это команда, которая запускается по истечении таймера. Вам нужны оба. Создание файлов без включения таймера приводит к неактивности расписания, а включение таймера, указывающего на неправильный путь к PHP или Nextcloud, может привести к многократным сбоям при запуске.

Nextcloud рекомендует использовать системный cron для фоновых задач в производственной среде. В текущем руководстве администратора также описаны таймеры systemd в качестве альтернативы. Пример расписания запускается через пять минут после загрузки системы, а затем планируется еще один запуск через пять минут после каждой активации службы. Это позволяет избежать необходимости посещения пользователем веб-интерфейса.

1. Подтвердите путь установки, пользователя и PHP CLI.

Перед редактированием модулей найдите каталог Nextcloud и проверьте, какую команду PHP ожидает веб-сервер. В типичной установке архива Ubuntu путь может быть таким: `<путь к каталогу>`, /var/www/nextcloudвеб-пользователь часто — `< имя пользователя www-data>`, а PHP CLI — `<имя пользователя>` /usr/bin/php. Проверьте это, а не предполагайте:

ls -l /var/www/nextcloud/cron.php
command -v php
php -v

Если ваш каталог Nextcloud находится в другом месте, замените его в обеих командах юнита ниже. Если веб-сервер использует отдельную версию PHP, используйте исполняемый файл CLI этой версии в ExecStartи ExecCondition. Служба systemd не наследует переменную PATH или окружение интерактивной оболочки, поэтому явное указание путей более надежно.

Проверьте статус под тем же пользователем, которого будет использовать systemd:

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/occ status -e

Команда Nextcloud occдолжна выполняться от имени пользователя HTTP, чтобы сохранить корректные права собственности и разрешения на файлы. Если в результате проверки будет обнаружена ошибка PHP, режим обслуживания или отсутствующий файл, сначала исправьте это; таймер не сможет компенсировать сбой команды Nextcloud.

2. Создайте одноразовую услугу.

Создавать /etc/systemd/system/nextcloudcron.service:

sudo nano /etc/systemd/system/nextcloudcron.service

Войдите в этот модуль, изменив путь и пользователя, если в вашей системе установлены другие параметры:

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

ExecConditionПроверяет, работает ли Nextcloud в обычном режиме, прежде чем запускать фоновое задание. Если условие не выполняется, systemd пропускает запуск; проверьте журнал, чтобы узнать причину. Позволяет внешним программам, запущенным фоновым заданием, продолжать работу после завершения основного процесса cron. В текущем примере Nextcloud раздел в этом файле службы KillMode=processне требуется .[Install]

Использовать его /usr/bin/phpцелесообразно только в том случае, если это правильный интерпретатор командной строки на вашем сервере. Например, пользовательский репозиторий PHP может установить версионированный бинарный файл. Используйте ту же совместимую версию PHP, которая требуется Nextcloud и которая используется в конфигурации его веб-сервера.

3. Создайте таймер.

Создавать /etc/systemd/system/nextcloudcron.timer:

sudo nano /etc/systemd/system/nextcloudcron.timer

Добавлять:

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

OnBootSecПланирует первый запуск через пять минут после запуска systemd при загрузке системы. OnUnitActiveSecПланирует еще один запуск через пять минут после последней активации службы. Таймер не совпадает со службой: включите и запустите модуль, .timerчтобы расписание выполнялось автоматически.

4. Перезагрузите systemd и включите таймер.

Попросите systemd прочитать новые файлы юнитов, затем включите и запустите таймер одной командой:

sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer

Проверьте таймер:

systemctl status nextcloudcron.timer
systemctl list-timers --all | grep nextcloudcron

Таймер должен быть загружен и активен, а list-timersв поле «Следующее» должно отображаться будущее время. Если он отключен, не загружен или не имеет следующей активации, убедитесь, что имя файла заканчивается на .timer, [Install]раздел содержит WantedBy=timers.target, и вы запустили команду daemon-reloadпосле сохранения файлов.

5. Проведите один тест и проверьте его результат.

Вы можете запустить службу один раз, не дожидаясь следующего срабатывания таймера:

sudo systemctl start nextcloudcron.service
sudo systemctl status nextcloudcron.service
sudo journalctl -u nextcloudcron.service -n 50 --no-pager

Проверьте результат работы сервиса и наличие ошибок PHP или Nextcloud. После завершения команды nextcloudcron.serviceможет произойти возврат к исходному состоянию inactive (dead), поскольку это одноразовая задача. Само по себе это не означает, что она завершилась с ошибкой. Таймер должен оставаться активным и планировать следующий запуск; в журнале должно отображаться, успешно ли завершился предыдущий запуск.

В настройках администрирования Nextcloud откройте раздел состояния фоновых заданий и убедитесь, что время последнего выполнения задания увеличивается после срабатывания таймера. Предупреждение в обзоре должно исчезнуть, когда Nextcloud обнаружит недавнюю фоновую активность. Подождите хотя бы один интервал после включения таймера, прежде чем принимать решение о том, что задание не было выполнено.

Диагностика распространенных причин отказов

То, что вы видитеЧто проверитьСледующий шаг
Таймер «неактивен» или отключен.Была ли включена и запущена функция таймера.Запустите sudo systemctl enable --now nextcloudcron.timer, затем проверьте.systemctl list-timers
Таймер активен, но служба не работает.Журнал сервиса, исполняемый файл PHP, путь к Nextcloud и пользователь сервиса.Запустите проверку состояния следующим образом www-data: исправьте первую обнаруженную ошибку PHP или ошибку доступа к файлам.
Сервис неактивен между запусками.Следующее время таймера и последняя запись в журнале обслуживания.Если служба завершила работу успешно, а таймер остается активным, это нормально для одноразового устройства.
Служба завершает работу, не запустившись.cron.phpРезультат ExecConditionи информация о том, находится ли Nextcloud в режиме технического обслуживания.Устраните ошибку, возникшую в системе, и проверьте состояние Nextcloud, прежде чем снова запускать задание вручную.
На странице администрирования по-прежнему отображается сообщение о том, что cron не был запущен.Проверяется, действительно ли служба вызывает правильный экземпляр и изменяется ли время его последнего выполнения.Дождитесь истечения заданного интервала времени, изучите журналы и убедитесь, что проверяете одну и ту же установку Nextcloud.

Для получения более подробной информации просмотрите последние журналы работы службы и файл журнала Nextcloud:

sudo journalctl -u nextcloudcron.service --since "30 minutes ago" --no-pager
sudo -u www-data /usr/bin/php -f /var/www/nextcloud/occ background-job:list

В списке заданий отображаются зарегистрированные задачи, но это само по себе не является доказательством того, что таймер выполняется. Используйте совместно время последнего и следующего срабатывания таймера, журнал служб и индикатор последнего запуска Nextcloud.

Когда следует использовать другой планировщик задач?

Таймеры Systemd хорошо работают, когда на сервере запущен Systemd, и вам нужно локальное расписание, управляемое службой. Если у вас уже используется стандартный демон cron и вы можете проверить его crontab, поддерживается также системная запись cron, которая вызывает тот же cron.phpметод www-data. Не планируйте оба метода для одного и того же экземпляра Nextcloud; перекрывающиеся вызовы могут привести к нерациональному расходованию ресурсов и усложнить поиск и устранение неисправностей.

Планирование AJAX-запросов зависит от количества пользователей, посещающих Nextcloud, и менее надежно для загруженного или многопользовательского сервера. Webcron выполняет запросы cron.phpпо HTTP и может подойти для очень небольшого экземпляра, где доступ к системе недоступен, но Nextcloud отмечает, что веб-выполнение ограничивает объем работы, который может быть выполнен за один вызов. Если Nextcloud контейнеризирован или управляется устройством, используйте поддерживаемый им планировщик или конфигурацию контейнера; служба хоста, использующая /var/www/nextcloudэтот путь, не будет работать, если он отсутствует на хосте.

В исправной конфигурации таймер включен с повторяющимся временем NEXT, запуски служб завершаются без ошибок PHP, а время последнего запуска Nextcloud сдвигается вперед. Если все три условия выполняются, но конкретная задача приложения все еще отображается с задержкой, возможно, планировщик работает, пока эта задача ожидает выполнения своего собственного расписания, окна технического обслуживания или условий очереди. Прежде чем изменять интервал таймера, проведите диагностику этой задачи отдельно.

Официальные ссылки

Оставить комментарий

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

Сравните 10 инструментов для сканирования сети (ping sweep) для быстрого обнаружения локальных сетей, кроссплатформенного сканирования и управления IP-адресами. Узнайте, что может — и чего не может — показать сканирование.

6 лучших инструментов управления сетью для отслеживания производительности

6 лучших инструментов управления сетью для отслеживания производительности

Сравните шесть инструментов управления сетью для мониторинга производительности, включая покрытие SNMP, сопоставление, оповещения, модели развертывания и компромиссы в отношении стоимости.

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Сравните лучшие программы для анализа Wi-Fi-сетей для Windows, iPhone и Android, включая инструменты для оценки загруженности каналов, зоны покрытия сигнала, тепловых карт и устранения неполадок в сети.

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

Сравните семь бесплатных мониторов ping с открытым исходным кодом, от полноценных сетевых пакетов до специализированных инструментов для измерения задержки, и выберите тот, который лучше всего подходит для проверки доступности, потери пакетов и истории соединений.

QoS в сетях: что делает качество обслуживания и как оно работает.

QoS в сетях: что делает качество обслуживания и как оно работает.

Узнайте, что означает QoS в сетях, как маркировка DSCP и очереди трафика определяют приоритет голосовых, видео- и бизнес-приложений, и что QoS не может исправить.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Сравните надежные SFTP-серверы для Windows и Linux, включая OpenSSH, Bitvise, SolarWinds и SFTPGo. Найдите подходящее решение для ваших потребностей в области безопасности и передачи файлов.

7 лучших инструментов для управления IP-адресами для сетевых команд

7 лучших инструментов для управления IP-адресами для сетевых команд

Сравните семь инструментов управления IP-адресами для обнаружения подсетей, координации DNS и DHCP, инвентаризации сети и управления IP-адресами с открытым исходным кодом.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Создайте практичную систему мониторинга сети с четким охватом устройств, полезными показателями производительности, действенными оповещениями и сравнением SolarWinds NPM, PRTG и OpManager.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

Сравните инструменты сканирования сети для быстрого обнаружения устройств, кроссплатформенного сканирования IP-адресов и корпоративного управления IP-адресами, получив рекомендации по подбору подходящего варианта для вашей сети.

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

Используйте опцию --traceroute в Nmap, чтобы сопоставить узлы маршрута с авторизованным хостом, понять вывод информации о узлах и времени кругового обхода (RTT), а также устранить неполадки, связанные с отсутствием ответов, без избыточного сканирования.