J'exécute plusieurs distributions Linux différentes (Fedora 11, CentOS 5 et SuSE 10.2) et je rencontre souvent un problème où un nouveau script que je veux exécuter en tant que tâche cron fonctionne correctement lorsqu'il est appelé directement à partir de la ligne de commande, mais échoue lors de l'appel depuis cron en raison de légères variations dans le PATH ou d'autres variables d'environnement requises.
Existe-t-il un moyen de tester l'exécution d'un script individuel comme s'il était exécuté à partir de cron, sans avoir à exécuter l'intégralité de crontab ou utiliser run-parts pour exécuter l'intégralité du répertoire cron.daily / .hourly, etc.? Je suppose que je pourrais éditer temporairement ma crontab pour exécuter le script dans les prochaines minutes, mais je préférerais avoir une solution plus autonome pour ne pas risquer de gâcher la crontab.
Si j'exécute un travail cron planifié individuellement (une ligne distincte dans crontab), je le planifie pour chaque minute ou toutes les deux minutes pendant que je le teste. Une fois testé, je modifierai la ligne crontab pour qu'elle fonctionne sur la fréquence que je désire.
En remarque, si je veux tester que cron lui-même fonctionne correctement et envoyer les résultats par e-mail à la bonne adresse (TRÈS important), j'ajouterai la ligne suivante à mon / etc / crontab:
Exécute toutes les minutes et essaie de faire un
ls
sur un répertoire qui n'existe pas. Devrait envoyer un message d'échec toutes les minutes. Je commente la ligne lorsque je la fais fonctionner.Revenons à votre question: vous ne voudrez probablement pas modifier le travail cron existant pour qu'il s'exécute souvent, à la fois parce qu'il est possible d'oublier de le changer à nouveau, et parce que l'exécution de votre cron.hourly, cron.daily ou cron. pourrait avoir des effets secondaires, selon ce que vous avez là-dedans. Pour vous assurer que vous exécutez le script dans le même environnement dans lequel il sera lorsqu'il sera appelé depuis cron, je vous recommande de modifier mon astuce "ls" ci-dessus:
Ajoutez une ligne à votre crontab pour exécuter le script directement:
De cette façon, vous pouvez l'exécuter aussi souvent que nécessaire pour le tester.
la source
Je ne connais pas de solution plus directe, mais vous pouvez créer un utilisateur (par exemple, crontest) avec des privilèges pour votre script, et utiliser la crontab spécifique à l'utilisateur pour l'utilisateur 'crontest' pour tester le (s) script (s) en modifiant pour que le script s'exécute dans les prochaines minutes.
la source