Taches de fond qui ne s'exécute pas (Nextcloud 19)

Bonjour,

J’ai installé Nextcloud (19.0.1) sur un Synology via docker. Tout fonctionne bien.

Cependant les taches de fonds ne s’exécutent pas. Sur aucun des choix possible (AJAX, WebCron, et Cron).

Déjà, 1ere question : Est ce grave ?

Et la 2ème : HELP, comment faire pour que ça fonctionne ?
J’ai essayé de relier via easycron, mais rien ne change, j’ai toujours un message dans l’interface admin qui me dit : “Certaines tâches n’ont pas été exécutées depuis 1il y a 3 jours. Veuillez envisager de passer à un système cron.”
Sur easycron, j’ai le message “success” qui apparait.

C’est peut-être un bug visuel ?

Par avance merci de votre aide,

Si j’ai oublié des infos, veuillez m’excuser.

Julien

Es-tu sûr d’avoir bien configuré l’URL d’appel dans easycron ?
As-tu essayé de lancer le cron à la main dans ton browser ?

Pour la gravité cela va poser des problèmes à un moment ou à un autre sans cette tache de fond (rappels, tache de maintenance du nextcloud…)

Oui j’ai bien configuré la bonne URL.
Et lorsque je lance l’URL dans mon navigateur, le résultat est “Success” …

Ton easycron tourne ou ? sur le même syno que ton NC ? tu utilises une URL d’appel avec une adresse IP et non un nom de domaine ?

J’utilise une URL d’appel vers un nom de domaine.

De quel info tu as besoin ?

Bonjour,
Pour cron, as tu installé et configuré crontab comme le demande la doc officielle ?

Cette partie la j’ai laissé en auto, car c’était sur AJAX et j’ai pas eu le besoin de le changer.
La aucune actualisation des taches de fond ne fonctionne donc j’ai voulu changer en webcron et rien non plus.

Pour cron… j’ai rien fait.
Mon fichier cron.php est comme ça :

<?php /** * @copyright Copyright (c) 2016, ownCloud, Inc. * * @author Artem Sidorenko * @author Christopher Schäpers * @author Christoph Wurst * @author Damjan Georgievski * @author Daniel Kesselberg * @author Jakob Sack * @author Joas Schilling * @author Jörn Friedrich Dreyer * @author Ko- * @author Michael Kuhn * @author Morris Jobke * @author Oliver Kohl D.Sc. * @author Robin Appelman * @author Roeland Jago Douma * @author Steffen Lindner * @author Thomas Müller * @author Vincent Petry * * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see * */ require_once __DIR__ . '/lib/versioncheck.php'; try { require_once __DIR__ . '/lib/base.php'; if (\OCP\Util::needUpgrade()) { \OC::$server->getLogger()->debug('Update required, skipping cron', ['app' => 'cron']); exit; } if ((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) { \OC::$server->getLogger()->debug('We are in maintenance mode, skipping cron', ['app' => 'cron']); exit; } // load all apps to get all api routes properly setup OC_App::loadApps(); \OC::$server->getSession()->close(); // initialize a dummy memory session $session = new \OC\Session\Memory(''); $cryptoWrapper = \OC::$server->getSessionCryptoWrapper(); $session = $cryptoWrapper->wrapSession($session); \OC::$server->setSession($session); $logger = \OC::$server->getLogger(); $config = \OC::$server->getConfig(); // Don't do anything if Nextcloud has not been installed if (!$config->getSystemValue('installed', false)) { exit(0); } \OC::$server->getTempManager()->cleanOld(); // Exit if background jobs are disabled! $appMode = $config->getAppValue('core', 'backgroundjobs_mode', 'ajax'); if ($appMode === 'none') { if (OC::$CLI) { echo 'Background Jobs are disabled!' . PHP_EOL; } else { OC_JSON::error(['data' => ['message' => 'Background jobs disabled!']]); } exit(1); } if (OC::$CLI) { // set to run indefinitely if needed if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) { @set_time_limit(0); } // the cron job must be executed with the right user if (!function_exists('posix_getuid')) { echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL; exit(1); } $user = posix_getpwuid(posix_getuid()); $configUser = posix_getpwuid(fileowner(OC::$configDir . 'config.php')); if ($user['name'] !== $configUser['name']) { echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL; echo "Current user: " . $user['name'] . PHP_EOL; echo "Owner of config.php: " . $configUser['name'] . PHP_EOL; exit(1); } // We call Nextcloud from the CLI (aka cron) if ($appMode !== 'cron') { $config->setAppValue('core', 'backgroundjobs_mode', 'cron'); } // Work $jobList = \OC::$server->getJobList(); // We only ask for jobs for 14 minutes, because after 5 minutes the next // system cron task should spawn and we want to have at most three // cron jobs running in parallel. $endTime = time() + 14 * 60; $executedJobs = []; while ($job = $jobList->getNext()) { if (isset($executedJobs[$job->getId()])) { $jobList->unlockJob($job); break; } $job->execute($jobList, $logger); // clean up after unclean jobs \OC_Util::tearDownFS(); $jobList->setLastJob($job); $executedJobs[$job->getId()] = true; unset($job); if (time() > $endTime) { break; } } } else { // We call cron.php from some website if ($appMode === 'cron') { // Cron is cron :-P OC_JSON::error(['data' => ['message' => 'Backgroundjobs are using system cron!']]); } else { // Work and success :-) $jobList = \OC::$server->getJobList(); $job = $jobList->getNext(); if ($job != null) { $job->execute($jobList, $logger); $jobList->setLastJob($job); } OC_JSON::success(); } } // Log the successful cron execution $config->setAppValue('core', 'lastcron', time()); exit(); } catch (Exception $ex) { \OC::$server->getLogger()->logException($ex, ['app' => 'cron']); } catch (Error $ex) { \OC::$server->getLogger()->logException($ex, ['app' => 'cron']); }

Je n’ai rien touché encore

Pas très lisible … :sweat:
Désolé

Si tas rien fait pour cron, c normal que ça fonctionne pas. Il faut sélectionner cron dans les paramètres admin, puis installer crontab sir ton serveur pour éditer le fichier crontab de www-data
Le fichier cron.php est un fichier exécutable que crontab exécutera toutes les 5 mn si c’est bien configuré. Le contenu de cron.php est sans intérêt.

Je vais poser une question bête mais, comment installer crontab sur mon serveur ? (je suis sur Docker Synology)

Salut,
Honnêtement… Je sais pas. Je ne suis pas familier des NAS. J’ai pu voir plusieurs tuto sur internet en tapant “crontab nas” qui peuvent aider mais ils ne s’accordent pas tous. Par exemple celui là sous entend quon peut le faire très simplement via l’interface du nas.

Hello,
Je suis intéresse car j’ai le même soucis.
J’ai d’abord essayé via EasyCron et même s’il m’indique “Success” j’ai toujours le message m’indiquant que certaines (lesquelles ?) taches n’ont pas été exécuté depuis x temps.
J’ai également essayé de planifier une tache Cron sur mon syno au travers d’une tache planifiée avec un script de type : curl “http://adresseduserveur/cron.php” mais, même si le serveur exécute la tâche sans erreur, toute les 5 min, le message reste le même avec cependant une icône Orange au lieu de rouge avec EasyCron. Le message ne change pas.

Comment connaitre les tâches qui ne s’exécutent pas ? Comment etre sur que les tâches actuelles s’exécutent correctement ?
Est ce que mon script est correct ?