Naprawa zadań cron Nextcloud, które nie uruchamiają się automatycznie za pomocą systemd

Aby zadania w tle Nextcloud były uruchamiane automatycznie przez systemd, należy skonfigurować usługę jednorazową, która działa cron.phpjako użytkownik serwera WWW, a następnie włączyć timer, który uruchamia tę usługę co pięć minut. Kluczowe kontrole to: timer jest włączony i ma ustawiony czas następnego uruchomienia, usługa wskazuje prawidłowe ścieżki Nextcloud i PHP oraz dziennik usług informuje o pomyślnym zakończeniu. Usługa jednorazowa może wyświetlać stan „nieaktywna” między uruchomieniami; może to być normalne po jej zakończeniu.

Ta konfiguracja dotyczy konwencjonalnej instalacji Nextcloud w systemie Ubuntu z użyciem systemd, z plikami Nextcloud dostępnymi na hoście. Jeśli Nextcloud działa w Dockerze, Snapie lub urządzeniu, takim jak Nextcloud All-in-One, należy użyć udokumentowanej metody harmonogramu danej dystrybucji zamiast kierować jednostkę hosta na ścieżkę wyłącznie do kontenera. W poniższych przykładach użyto symboli /var/www/nextcloudi www-data; zamiast nich należy użyć rzeczywistej ścieżki instalacji i użytkownika HTTP na serwerze.

Co powinien osiągnąć timer

Nextcloud cron.phpuruchamia zadania w tle, takie jak konserwacja i zadania aplikacji, w kolejce. Timer systemd to zegar; usługa to polecenie uruchamiane po upływie czasu. Potrzebne są oba. Utworzenie plików bez włączenia timera powoduje, że harmonogram pozostaje nieaktywny, a włączenie timera wskazującego na niewłaściwą ścieżkę PHP lub Nextcloud może powodować powtarzające się nieudane uruchomienia.

Nextcloud zaleca system cron do zadań produkcyjnych w tle. Aktualny podręcznik administratora dokumentuje również timery systemd jako alternatywę. Przykładowy harmonogram uruchamia się pięć minut po uruchomieniu, a następnie planuje kolejne uruchomienie pięć minut po każdej aktywacji usługi. Pozwala to uniknąć konieczności odwiedzania interfejsu webowego przez użytkownika.

1. Potwierdź ścieżkę instalacji, użytkownika i interfejs wiersza poleceń PHP

Przed edycją jednostek zlokalizuj rzeczywisty katalog Nextcloud i sprawdź, jakiego polecenia PHP oczekuje instalacja serwera WWW. W typowej instalacji archiwum Ubuntu ścieżka może być /var/www/nextcloud, użytkownik WWW to często www-data, a PHP CLI to /usr/bin/php. Sprawdź zamiast zakładać:

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

Jeśli katalog Nextcloud znajduje się gdzie indziej, zastąp go w obu poniższych poleceniach jednostki. Jeśli serwer WWW korzysta z oddzielnej wersji PHP, użyj pliku wykonywalnego CLI tej wersji w ExecStarti ExecCondition. Usługa systemd nie dziedziczy zmiennej środowiskowej PATH ani środowiska powłoki interaktywnej, więc jawne ścieżki są bardziej niezawodne.

Przetestuj sprawdzanie statusu przy użyciu tego samego użytkownika, którego będzie używał systemd:

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

Polecenie Nextcloud occpowinno zostać uruchomione jako użytkownik HTTP, aby zachować poprawną własność i uprawnienia pliku. Jeśli ten test zgłosi błąd PHP, tryb konserwacji lub brakujący plik, należy to najpierw naprawić; timer nie jest w stanie zrekompensować nieudanego polecenia Nextcloud.

2. Utwórz usługę jednorazową

Tworzyć /etc/systemd/system/nextcloudcron.service:

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

Wprowadź tę jednostkę, dostosowując ścieżkę i użytkownika, jeśli Twoja instalacja jest inna:

[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

ExecConditionSprawdza, czy Nextcloud działa prawidłowo przed uruchomieniem zadania w tle. Jeśli warunek nie zostanie spełniony, systemd pomija uruchomienie; sprawdź dziennik, aby dowiedzieć się, dlaczego. KillMode=processUmożliwia zewnętrznym programom uruchomionym przez zadanie w tle kontynuowanie działania po zakończeniu głównego procesu cron. Obecny przykład Nextcloud nie wymaga sekcji [Install]w tym pliku usługi.

Użycie /usr/bin/phpjest właściwe tylko wtedy, gdy na serwerze znajduje się właściwy interpreter CLI. Na przykład, niestandardowe repozytorium PHP może zainstalować wersjonowany plik binarny. Użyj tej samej kompatybilnej wersji PHP, której wymaga NextCloud i która jest używana w konfiguracji serwera WWW.

3. Utwórz timer

Tworzyć /etc/systemd/system/nextcloudcron.timer:

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

Dodać:

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

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

[Install]
WantedBy=timers.target

OnBootSecPlanuje pierwsze uruchomienie pięć minut po uruchomieniu systemu systemd. OnUnitActiveSecPlanuje kolejne uruchomienie pięć minut po ostatniej aktywacji usługi. Timer nie jest tym samym co usługa: włącz i uruchom urządzenie .timer, aby harmonogram uruchomił się automatycznie.

4. Przeładuj systemd i włącz timer

Poproś systemd o odczytanie nowych plików jednostek, a następnie włącz i uruchom timer jednym poleceniem:

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

Sprawdź licznik:

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

Timer powinien być załadowany i aktywny, a list-timersw polu NEXT powinien wskazywać przyszły czas. Jeśli jest wyłączony, nie jest załadowany lub nie ma kolejnej aktywacji, sprawdź, czy nazwa pliku kończy się na .timer, [Install]sekcja zawiera , a po zapisaniu plików WantedBy=timers.targetzostał uruchomiony .daemon-reload

5. Uruchom jeden test i sprawdź jego wynik

Usługę można uruchomić jednorazowo, nie czekając na kolejny sygnał zegara:

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

Sprawdź wynik usługi oraz wszelkie błędy PHP lub NextCloud. Po zakończeniu polecenia nextcloudcron.servicemożna powrócić do [ inactive (dead)brakuje informacji o błędzie], ponieważ jest to zadanie jednorazowe. Samo to nie oznacza, że ​​się nie powiodło. Timer powinien pozostać aktywny i zaplanować kolejne uruchomienie; dziennik powinien wskazywać, czy poprzednie uruchomienie zakończyło się pomyślnie.

W ustawieniach administracji Nextcloud otwórz obszar stanu zadania w tle i sprawdź, czy czas ostatniego wykonania zadania jest przyspieszony po uruchomieniu timera. Ostrzeżenie powinno zniknąć, gdy Nextcloud wykryje ostatnią aktywność w tle. Odczekaj co najmniej jeden interwał po włączeniu timera, zanim uznasz, że harmonogram nie został uruchomiony.

Zdiagnozuj typowe wzorce awarii

Co widziszCo sprawdzićNastępny krok
Timer jest „nieaktywny” lub wyłączonyCzy jednostka timera została włączona i uruchomionaUruchom sudo systemctl enable --now nextcloudcron.timer, a następnie sprawdźsystemctl list-timers
Timer jest aktywny, ale usługa nie działaDziennik usług, plik wykonywalny PHP, ścieżka Nextcloud i użytkownik usługiUruchom test statusu jako www-data; napraw pierwszy zgłoszony błąd PHP lub błąd uprawnień pliku
Usługa jest nieaktywna pomiędzy uruchomieniamiCzas NEXT timera i ostatni wpis w dzienniku usługiJeśli usługa zakończyła się pomyślnie, a licznik czasu pozostaje aktywny, jest to normalne w przypadku jednostki jednorazowej
Usługa kończy działanie bez uruchomieniacron.phpWynik ExecConditioni informacja, czy NextCloud znajduje się w trybie konserwacjiRozwiąż problem z warunkiem i sprawdź stan Nextcloud przed ponownym ręcznym uruchomieniem zadania
Strona administratora nadal informuje, że cron nie został uruchomionyCzy usługa rzeczywiście wywołuje prawidłową instancję i czy zmienia się jej ostatni czas wykonaniaOdczekaj określony interwał, sprawdź dzienniki i upewnij się, że sprawdzasz tę samą instalację Nextcloud

Aby uzyskać więcej szczegółów, przejrzyj najnowsze dzienniki usług i plik dziennika 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

Lista zadań pokazuje zarejestrowaną pracę, ale sama w sobie nie stanowi dowodu na to, że timer jest wykonywany. Użyj razem czasu ostatniej i następnej aktywacji timera, dziennika usług oraz wskaźnika ostatniego uruchomienia Nextcloud.

Kiedy używać innego harmonogramu

Timery Systemd działają dobrze, gdy serwer korzysta z Systemd i chcesz mieć lokalny harmonogram zarządzany przez usługę. Jeśli korzystasz już ze standardowego demona cron i możesz zweryfikować jego plik crontab, obsługiwany jest również wpis systemowy cron, który wywołuje to samo cron.php. www-dataNie planuj obu metod dla tej samej instancji Nextcloud; nakładające się wywołania mogą marnować zasoby i komplikować rozwiązywanie problemów.

Harmonogramowanie AJAX zależy od użytkowników odwiedzających Nextcloud i jest mniej niezawodne w przypadku serwera obciążonego ruchem lub obsługującego wielu użytkowników. Webcron wywołuje połączenia cron.phpprzez HTTP i może być odpowiedni w przypadku bardzo małych instancji, w których dostęp do systemu jest niedostępny, ale Nextcloud zauważa, że ​​wykonywanie zadań w sieci ogranicza ilość pracy, jaką można wykonać w ramach jednego wywołania. Jeśli Nextcloud jest konteneryzowany lub zarządzany przez urządzenie, należy użyć obsługiwanego harmonogramu lub konfiguracji kontenera; usługa hosta korzystająca z tej funkcji /var/www/nextcloudnie będzie działać, jeśli ta ścieżka nie jest obecna na hoście.

Prawidłowa konfiguracja ma włączony timer z cyklicznym czasem NEXT, uruchomienia usług, które kończą się bez błędów PHP, oraz czas ostatniego uruchomienia Nextcloud, który przesuwa się do przodu. Jeśli wszystkie trzy warunki są spełnione, ale dane zadanie aplikacji nadal wydaje się opóźnione, harmonogram może działać, podczas gdy zadanie oczekuje na własny harmonogram, okno konserwacji lub warunki kolejki. Przed zmianą interwału timera należy zdiagnozować to zadanie oddzielnie.

Oficjalne referencje

Zostaw komentarz

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

Porównaj 10 narzędzi do pingowania, które umożliwiają szybkie wykrywanie sieci LAN, skanowanie międzyplatformowe i zarządzanie adresami IP. Dowiedz się, co narzędzie pingujące może Ci powiedzieć, a czego nie.

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

Porównaj sześć narzędzi do zarządzania siecią służących do monitorowania wydajności, obejmujących zasięg SNMP, mapowanie, alerty, modele wdrażania i kompromisy kosztów.

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Porównaj siedem darmowych i otwartych monitorów pingów — od kompletnych pakietów sieciowych po ukierunkowane sondy opóźnień — i wybierz odpowiedni monitor pod kątem dostępności, utraty pakietów i historii.

QoS w sieciach: czym jest jakość usług i jak działa

QoS w sieciach: czym jest jakość usług i jak działa

Dowiedz się, co oznacza QoS w sieciach, w jaki sposób oznaczenia DSCP i kolejki ruchu nadają priorytet aplikacjom głosowym, wideo i biznesowym oraz czego QoS nie jest w stanie naprawić.

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Porównaj niezawodne oprogramowanie serwera SFTP dla systemów Windows i Linux, w tym OpenSSH, Bitvise, SolarWinds i SFTPGo. Znajdź rozwiązanie odpowiednie dla swoich potrzeb w zakresie bezpieczeństwa i transferu plików.

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

Porównaj siedem narzędzi do zarządzania adresami IP służących do wykrywania podsieci, koordynacji DNS i DHCP, inwentaryzacji sieci i otwartego oprogramowania IPAM.

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

Porównaj sześć narzędzi do monitorowania systemu Windows Server pod kątem zbierania danych systemu Windows, widoczności aplikacji, modelu wdrażania i licencjonowania, aby znaleźć odpowiednie rozwiązanie.

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

Porównaj narzędzia do skanowania sieciowego umożliwiające szybkie wykrywanie urządzeń, skanowanie adresów IP na wielu platformach oraz zarządzanie IPAM w przedsiębiorstwie. Znajdziesz tu wskazówki dotyczące dopasowania każdej opcji do swojej sieci.

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Zbuduj praktyczny monitoring sieci z przejrzystym zakresem urządzeń, przydatnymi wskaźnikami wydajności, przydatnymi alertami oraz porównaniem SolarWinds NPM, PRTG i OpManager.

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Użyj opcji --traceroute programu Nmap, aby mapować przeskoki do autoryzowanego hosta, zrozumieć dane wyjściowe dotyczące przeskoków i czasu RTT oraz rozwiązywać problemy z brakującymi odpowiedziami bez nadmiernego skanowania.