Je veux vérifier si une certaine crontab fonctionne correctement. J'ai ajouté un travail comme celui-ci:
*/2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1
Je sais que je redirige vers le périphérique null, mais je ne sais pas si la commande ci-dessus est bonne.
* Edit 1: Dans mon / var / log / syslog toutes les deux minutes, j'ai l'erreur suivante:
(CRON) error (grandchild #2788 failed with exit status 2)
* Edit 2: Aucune erreur dans les journaux avec ce nouveau travail:
*/2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1
Réponses:
La syntaxe de l'entrée crontab semble correcte. En effet, si vous modifiez votre crontab en utilisant "
crontab -e
" (comme vous le devriez), vous obtiendrez une erreur si vous spécifiez quand même une entrée de crontab syntaxiquement invalide.Tout d’abord,
/path_to_my_php_script/info.php
s’exécute-t-il correctement à partir de la ligne de commande?Si oui, fonctionne-t-il correctement comme ceci ?:
Si cela fonctionne, ça marche comme ça?
L'étape (3) est similaire à la façon dont cron exécutera votre programme (comme indiqué dans "man 5 cron".
Le problème le plus probable que vous rencontrez est que le PATH utilisé par cron pour exécuter votre programme est trop restrictif. Par conséquent, vous souhaiterez peut-être ajouter quelque chose comme ceci en haut de votre entrée dans la crontab (vous devrez ajouter les répertoires dont votre script aura besoin):
Notez également que cron utilisera par défaut
/bin/sh
, pas bash. Si vous avez besoin de bash, ajoutez également ceci au début de votre fichier crontab:Notez que ces deux modifications affecteront toutes les entrées de la crontab. Si vous voulez simplement modifier ces valeurs pour votre
info.php
programme, vous pouvez faire quelque chose comme ceci:Il est également intéressant de noter que sur un système configuré pour "mail" (en d'autres termes, un système sur lequel un MTA est configuré [sendmail / postfix / etc]), toutes les sorties des programmes crontab vous sont envoyées automatiquement par courrier électronique. La messagerie locale ne sera pas configurée sur un système de bureau Ubuntu par défaut, mais si vous travaillez sur un serveur, vous pouvez simplement taper "mail" dans un terminal pour voir tous ces courriers cron. Ceci s'applique également à la
at
commande " ".la source
Bien que très rare, cron cesse parfois de fonctionner correctement même si le service est en cours d'exécution. Voici comment vérifier que crond est en cours d'exécution et arrêter / démarrer le service.
Sous Linux:
Sur Ubuntu et d’autres systèmes basés sur Debian:
la source
cron
pas çacrond
Ne redirigez pas la sortie d'erreur vers / dev / null et grep / var / log / syslog pour la sortie cron.
Vous pouvez immédiatement afficher les erreurs lorsque vous enregistrez un fichier après une édition
/etc/crontab
ou des fichiers/etc/cron.d/
avec:Si l'édition est ok, vous ne verrez que la
RELOAD
notification, des erreurs se produiront commela source
Vous pouvez voir votre cron actif avec la commande terminal:
Voici les paramètres dans l'ordre:
min (0 - 59)
heure (0 - 23)
jour du mois (1 - 31)
mois (1 - 12)
jour de la semaine (0 - 6) (dimanche = 0)
commander
Donc, vous appelez votre script à la première minute de chaque heure. Vous devez tester votre sortie à des intervalles plus fréquents à des fins de test:
Cela va l'appeler chaque minute!
la source
Pour la partie horaire de chaque ligne, vous pouvez utiliser ce testeur cron pour tester / vérifier votre définition de temps cron.
la source
Je pense que vous pouvez également utiliser
run-parts
des tâches cron en dehors du groupe. C’est en fait ce que cron utilise pour exécuter les tâches périodiques, donc en fournissant les arguments appropriés, vous pouvez les exécuter à tout moment.Si vous souhaitez uniquement exécuter un fichier à la place de tous les travaux cron définis dans, par exemple,
/etc/cron.daily
vous devrez fournir l'argument regex avec une expression rationnelle valide.run-parts --list --regex '^p.*d$' /etc
N'oubliez pas que les tâches cron sont généralement nommées sans extension et marquées comme exécutables. Assurez-vous donc que vos scripts sont similaires, bien que l'utilisation d'une expression régulière puisse vous permettre de déclencher un script avec une extension.
la source
ah !!
J'ai moi-même eu la réponse, j'ai vérifié et je n'ai pas trouvé
crond
le répertoire d'installation par défaut, c'est-à-dire/etc/init.d/
va maintenant essayer de répondre.
note - j'ai vérifié le
cron.allow
,cron.deny
aussi. Tout va bien jusqu'à présent.la source