Remediați problemele legate de cron job-urile Nextcloud care nu rulează automat cu systemd

Pentru ca joburile de fundal Nextcloud să ruleze automat cu systemd, configurați un serviciu one-shot care rulează cron.phpca utilizator al serverului web, apoi activați un cronometru care pornește acel serviciu la fiecare cinci minute. Verificările cheie sunt: ​​cronometrul este activat și are o oră de execuție următoare, serviciul indică căile corecte Nextcloud și PHP, iar jurnalul serviciului arată o ieșire reușită. Un serviciu one-shot poate afișa „inactiv (mort)” între execuții; acest lucru poate fi normal după ce se termină.

Această configurație este pentru o instalare convențională Nextcloud pe Ubuntu folosind systemd, cu fișierele Nextcloud disponibile pe gazdă. Dacă Nextcloud rulează în Docker, Snap sau un dispozitiv precum Nextcloud All-in-One, utilizați metoda de planificare documentată a distribuției respective în loc să indicați o unitate gazdă către o cale exclusivă de container. Exemplele de mai jos utilizează /var/www/nextcloudși www-data; înlocuiți-le cu calea de instalare reală și utilizatorul HTTP de pe serverul dvs.

Ce ar trebui să realizeze cronometrul

Nextcloud cron.phprulează activități în fundal puse în coadă, cum ar fi mentenanța și sarcinile aplicației. Cronometrul systemd este ceasul; serviciul este comanda care rulează atunci când cronometrul expiră. Aveți nevoie de ambele. Crearea fișierelor fără activarea cronometrului lasă programul inactiv, în timp ce activarea unui cronometru care indică o cale PHP sau Nextcloud greșită poate produce rulări eșuate repetate.

Nextcloud recomandă cronul de sistem pentru joburile de fundal de producție. Manualul său actual de administrare documentează, de asemenea, cronometrele systemd ca alternativă. Exemplul de programare începe la cinci minute după pornire și apoi programează o altă rulare la cinci minute după fiecare activare a serviciului. Se evită dependența de un utilizator care vizitează interfața web.

1. Confirmați calea de instalare, utilizatorul și interfața CLI PHP

Înainte de a edita unitățile, localizați directorul Nextcloud propriu-zis și verificați ce comandă PHP este așteptată de instalarea serverului web. Într-o instalare tipică de arhivă Ubuntu, calea poate fi /var/www/nextcloud, utilizatorul web este adesea www-data, iar PHP CLI este /usr/bin/php. Verificați în loc să presupuneți:

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

Dacă directorul Nextcloud se află în altă parte, înlocuiți directorul respectiv în ambele comenzi unit de mai jos. Dacă serverul web folosește o versiune separată de PHP, utilizați executabilul CLI al acelei versiuni în ExecStartși ExecCondition. Un serviciu systemd nu moștenește CALEA sau mediul shell-ului interactiv, deci căile explicite sunt mai fiabile.

Testați verificarea stării sub același utilizator pe care îl va folosi systemd:

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

Comanda Nextcloud occar trebui să ruleze ca utilizator HTTP pentru a păstra proprietatea și permisiunile corecte ale fișierelor. Dacă acest test raportează o eroare PHP, un mod de întreținere sau un fișier lipsă, remediați mai întâi acest lucru; cronometrul nu poate compensa o comandă Nextcloud eșuată.

2. Creați serviciul unic

Creați /etc/systemd/system/nextcloudcron.service:

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

Introduceți această unitate, ajustând calea și utilizatorul dacă instalarea dvs. diferă:

[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

ExecConditionverifică dacă Nextcloud funcționează normal înainte de a lansa jobul în fundal. Dacă condiția eșuează, systemd omite rularea; inspectați jurnalul pentru a afla de ce. KillMode=processpermite programelor externe pornite de un job în fundal să continue după încheierea procesului cron principal. Exemplul actual de Nextcloud nu necesită o [Install]secțiune în acest fișier de serviciu.

Utilizarea /usr/bin/phpeste potrivită doar atunci când acesta este interpretorul CLI corect pe serverul dvs. De exemplu, un depozit PHP personalizat poate instala un binar versionat. Folosiți aceeași versiune PHP compatibilă pe care o necesită Nextcloud și pe care o utilizează configurația serverului său web.

3. Creați cronometrul

Creați /etc/systemd/system/nextcloudcron.timer:

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

Adăuga:

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

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

[Install]
WantedBy=timers.target

OnBootSecprogramează prima rulare la cinci minute după ce systemd pornește la bootare. OnUnitActiveSecprogramează o altă rulare la cinci minute după ce serviciul a fost activat ultima dată. Cronometrul nu este același cu serviciul: activați și porniți unitatea .timerpentru ca programarea să ruleze automat.

4. Reîncărcați systemd și activați cronometrul

Cereți systemd să citească noile fișiere unitare, apoi activați și porniți cronometrul într-o singură comandă:

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

Verificați cronometrul:

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

Cronometrul ar trebui să fie încărcat și activ și list-timersar trebui să afișeze un moment viitor în secțiunea URMĂTOR. Dacă este dezactivat, nu este încărcat sau nu are o activare următoare, confirmați că numele fișierului se termină în .timer, [Install]secțiunea conține WantedBy=timers.targetși ați rulat daemon-reloaddupă salvarea fișierelor.

5. Rulați un test și inspectați rezultatul acestuia

Puteți lansa serviciul o singură dată fără a aștepta următoarea bifare a cronometrului:

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

Căutați rezultatul serviciului și orice erori PHP sau Nextcloud. După finalizarea comenzii, nextcloudcron.serviceeste posibil să reveniți la inactive (dead)deoarece este o sarcină unică. Asta nu înseamnă că a eșuat. Cronometrul ar trebui să rămână activ și să programeze următoarea rulare; jurnalul ar trebui să arate dacă rularea anterioară s-a încheiat cu succes.

În setările de administrare Nextcloud, deschideți zona de stare a jobului în fundal și confirmați că ora de execuție a ultimului job avansează după declanșarea temporizatorului. Avertismentul general ar trebui să dispară atunci când Nextcloud detectează activitate recentă în fundal. Așteptați cel puțin un interval după activarea temporizatorului înainte de a decide că programul nu a rulat.

Diagnosticați tiparele comune de defecțiuni

Ceea ce veziCe să verificațiUrmătorul pas
Cronometrul este „inactiv” sau dezactivatDacă unitatea temporizatorului a fost activată și pornităExecută sudo systemctl enable --now nextcloudcron.timer, apoi verificăsystemctl list-timers
Cronometrul este activ, dar serviciul eșueazăJurnalul de servicii, executabilul PHP, calea Nextcloud și utilizatorul serviciuluiRulați testul de stare ca www-data; remediați prima eroare PHP sau de permisiune a fișierelor raportată
Serviciul este inactiv între rulăriUrmătoarea oră a cronometrului și ultima intrare în jurnal a serviciuluiDacă serviciul s-a încheiat cu succes și cronometrul rămâne activ, acest lucru este normal pentru o unitate cu o singură utilizare.
Serviciul se închide fără a rulacron.phpRezultatul ExecConditionși dacă Nextcloud este în modul de întreținereRezolvați condiția de eșec și verificați starea Nextcloud înainte de a reporni manual jobul.
Pagina de administrare încă raportează că cron-ul nu a rulat.Dacă serviciul invocă într-adevăr instanța corectă și dacă ultima sa oră de execuție se modificăAșteptați un interval de temporizator, verificați jurnalele și verificați dacă verificați aceeași instalare Nextcloud

Pentru mai multe detalii, consultați jurnalele de servicii recente și fișierul jurnal 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 de joburi afișează lucrările înregistrate, dar nu este în sine o dovadă că temporizatorul se execută. Folosește împreună ultima și următoarea activare a temporizatorului, jurnalul de servicii și indicatorul de ultima execuție al Nextcloud.

Când să utilizați un alt planificator

Temporizatoarele Systemd funcționează bine atunci când serverul rulează systemd și doriți o programare locală, gestionată de servicii. Dacă deja utilizați un daemon cron standard și puteți verifica crontab-ul acestuia, este acceptată și o intrare cron de sistem care apelează același cod cron.phpca www-data. Nu programați ambele metode pentru aceeași instanță Nextcloud; apelurile care se suprapun pot irosi resurse și pot complica depanarea.

Programarea AJAX depinde de utilizatorii care vizitează Nextcloud și este mai puțin fiabilă pentru un server aglomerat sau cu mai mulți utilizatori. Webcron apelează cron.phpprin HTTP și poate fi potrivit pentru o instanță foarte mică în care accesul la sistem nu este disponibil, dar Nextcloud notează că execuția web limitează cantitatea de lucru care poate fi executată per apel. Dacă Nextcloud este containerizat sau gestionat de un dispozitiv, utilizați planificatorul sau configurația containerului acceptată; un serviciu gazdă care utilizează /var/www/nextcloudnu va funcționa dacă acea cale nu este prezentă pe gazdă.

O configurație sănătoasă are un cronometru activat cu o oră NEXT recurentă, rulări de servicii care se finalizează fără erori PHP și o oră de execuție a ultimei runde Nextcloud care avansează. Dacă toate cele trei sunt adevărate, dar o anumită sarcină a aplicației pare în continuare întârziată, este posibil ca planificatorul să funcționeze în timp ce jobul respectiv așteaptă propria programare, fereastră de întreținere sau condiții de coadă. Diagnosticați acel job separat înainte de a modifica intervalul cronometrului.

Referințe oficiale

Lasă un comentariu

10 cele mai bune instrumente Ping Sweep pentru găsirea dispozitivelor în rețeaua dvs.

10 cele mai bune instrumente Ping Sweep pentru găsirea dispozitivelor în rețeaua dvs.

Comparați 10 instrumente de scanare ping pentru descoperirea rapidă a rețelelor LAN, scanarea multi-platformă și gestionarea adreselor IP. Aflați ce vă poate spune o scanare (sweep).

6 Cele mai bune instrumente de gestionare a rețelei pentru urmărirea performanței

6 Cele mai bune instrumente de gestionare a rețelei pentru urmărirea performanței

Comparați șase instrumente de gestionare a rețelei pentru monitorizarea performanței, inclusiv acoperirea SNMP, maparea, alertele, modelele de implementare și compromisurile de costuri.

QoS în rețele: Ce face calitatea serviciilor și cum funcționează

QoS în rețele: Ce face calitatea serviciilor și cum funcționează

Aflați ce înseamnă QoS în rețele, cum marcajele DSCP și cozile de trafic prioritizează aplicațiile vocale, video și de business și ce nu poate remedia QoS.

Cel mai bun software de server SFTP pentru transferuri securizate de fișiere

Cel mai bun software de server SFTP pentru transferuri securizate de fișiere

Compară software-ul de server SFTP fiabil pentru Windows și Linux, inclusiv OpenSSH, Bitvise, SolarWinds și SFTPGo. Găsește soluția potrivită pentru nevoile tale de securitate și transfer de fișiere.

Cele mai bune practici de monitorizare a rețelei: Ce să urmăriți și ce instrumente să utilizați

Cele mai bune practici de monitorizare a rețelei: Ce să urmăriți și ce instrumente să utilizați

Construiți o monitorizare practică a rețelei cu o acoperire clară a dispozitivelor, indicatori de performanță utili, alerte acționabile și o comparație între SolarWinds NPM, PRTG și OpManager.

Cele mai bune 7 instrumente de gestionare a adreselor IP pentru echipele de rețea

Cele mai bune 7 instrumente de gestionare a adreselor IP pentru echipele de rețea

Comparați șapte instrumente de gestionare a adreselor IP pentru descoperirea subrețelelor, coordonarea DNS și DHCP, inventarul rețelei și IPAM open-source.

10 cele mai bune instrumente de scanare a rețelei pentru descoperirea dispozitivelor și a adreselor IP

10 cele mai bune instrumente de scanare a rețelei pentru descoperirea dispozitivelor și a adreselor IP

Comparați instrumentele de scanare a rețelei pentru descoperirea rapidă a dispozitivelor, scanări IP pe mai multe platforme și IPAM pentru întreprinderi, cu îndrumări privind potrivirea fiecărei opțiuni la rețeaua dvs.

Cum se utilizează Nmap pentru Traceroute și citirea căii de rețea

Cum se utilizează Nmap pentru Traceroute și citirea căii de rețea

Folosește opțiunea --traceroute din Nmap pentru a mapa salturi la o gazdă autorizată, a înțelege ieșirea saltului și a RTT-ului și a depana răspunsurile lipsă fără a suprascana.

6 Cele mai bune instrumente de monitorizare a serverelor Windows pentru o disponibilitate și o performanță mai bune

6 Cele mai bune instrumente de monitorizare a serverelor Windows pentru o disponibilitate și o performanță mai bune

Comparați șase instrumente de monitorizare Windows Server în funcție de colectarea datelor Windows, vizibilitatea aplicațiilor, modelul de implementare și licențierea pentru a găsi instrumentul potrivit.

6 instrumente de monitorizare a rețelei Linux pentru dispozitive, gazde și trafic

6 instrumente de monitorizare a rețelei Linux pentru dispozitive, gazde și trafic

Comparați șase instrumente de monitorizare a rețelei Linux pentru descoperirea dispozitivelor SNMP, grafice de interfață, metrici gazdă, verificări de servicii și fluxuri de trafic.