Amsonia Posté(e) le 26 avril 2013 Partager Posté(e) le 26 avril 2013 Bonjour, J'ai l'impression que les quelques scripts que j'ai mis en place ne s'executent pas via cron. Voici un extrait de ma crontab : j'ai bien veillé à mettre des tabulations et non des espaces */5 * * * * root python2.6 /volume1/@choses/gandyn/filemoi-ca.py >> /volume1/@choses/gandyn/filemoi-ca.log Un fichier filemoi-ca.log est bien créé mais est toujours vide. Le dossier contenant le script ainsi que le script sont chmodés en 750 (cf capture). Est-ce l'user qui n'est pas le bon ? Si oui, que devrais-je mettre d'autre à la place de root ? nobody ? Des idées ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 26 avril 2013 Partager Posté(e) le 26 avril 2013 (modifié) J'ai l'impression que les quelques scripts que j'ai mis en place ne s'executent pas via cron. Voici un extrait de ma crontab : j'ai bien veillé à mettre des tabulations et non des espaces */5 * * * * root python2.6 /volume1/@choses/gandyn/filemoi-ca.py >> /volume1/@choses/gandyn/filemoi-ca.log Un fichier filemoi-ca.log est bien créé mais est toujours vide. Le dossier contenant le script ainsi que le script sont chmodés en 750 (cf capture). Est-ce l'user qui n'est pas le bon ? Si oui, que devrais-je mettre d'autre à la place de root ? nobody ? Plusieurs choses: la commande "python2.6" n'est très certainement pas dans le PATH des process lancés par cron avec le ">>" tu ne rediriges que la sortie standard, mais la sortie de diagnostic est perdue. En ajoutant "2>&1" à la ligne de commande tu constateras dans ton log pourquoi ça coince (et je suis prêt à parier que le message d'erreur va être "sh: python2.6: not found") Je te conseille de plutôt passer par un script shell intermédiaire "autosuffisant" pour exécuter ta commande. Définis dans ce dernier la valeur de PATH appropriée, quelque chose comme: #!/bin/sh PATH=/opt/bin:/bin:/usr/bin python2.6 /volume1/@choses/gandyn/filemoi-ca.py dans la crontab c'est le chemin de ce script que tu mettras Modifié le 26 avril 2013 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amsonia Posté(e) le 26 avril 2013 Auteur Partager Posté(e) le 26 avril 2013 (modifié) Merci beaucoup pour ta réponse, ça m'aide mais apporte aussi quelques questions. python2.6 pas dans le PATH. Ok, est-ce que mettre le chemin asbolu vers python (/opt/bin/python2.6) dans ma cron au lieu de python2.6 ne résoudrait pas tous mes problèmes ? mon script python (dont je ne suis pas l'auteur) commence par ce qui suit : #!/usr/bin/python # -*- coding: UTF-8 -*- import xmlrpclib, urllib2, time, re, sys Faut-il (aussi) que je rajoute PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin en deuxième ligne ? ou que je change remplace la première ligne par ce long PATH ? Enfin, par rapport à 2>&1, tu dis qu'il faut que je le rajoute à ma commande cron. Ok mais où ? avant ou après le >> ? J'ai aussi vu que, pour redémarrer le service cron, on avait conseillé ici sur le forum de rajouter "env - " devant /usr/syno/etc/rc.d/S04crond.sh stop. Est-ce que si je mets "env - python2.6 /volume1/@choses/gandyn/filemoi-ca.py" ça ne fonctionnerait pas ? Modifié le 26 avril 2013 par Amsonia 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 26 avril 2013 Partager Posté(e) le 26 avril 2013 python2.6 pas dans le PATH. Ok, est-ce que mettre le chemin asbolu vers python (/opt/bin/python2.6) dans ma cron au lieu de python2.6 ne résoudrait pas tous mes problèmes ? Ca dépend, je ne sais pas quels sont tes *autres* problèmes mais pour le script qui ne s'exécute pas mais en effet ça serait suffisant. mon script python (dont je ne suis pas l'auteur) commence par ce qui suit : #!/usr/bin/python # -*- coding: UTF-8 -*- import xmlrpclib, urllib2, time, re, sys Faut-il (aussi) que je rajoute PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin en deuxième ligne ? ou que je change remplace la première ligne par ce long PATH ? Non, et en plus la syntaxe "PATH=..." est une syntaxe shell, python ne la comprendrait pas. Si tu veux tout savoir, la ligne qui commence par "#!" permet d'exécuter le script directement, en tant que *commande*. Par exemple, en remplacant cette ligne par #! /opt/bin/python2.6 et en le rendant le script python ("filemoi-ca.py") exécutable (chmod +x), le script de lancement (ou la ligne de crontab) pourra se contenter de contenir la ligne: /volume1/@choses/gandyn/filemoi-ca.py sans le prefixe "python2.6" Enfin, par rapport à 2>&1, tu dis qu'il faut que je le rajoute à ma commande cron. Ok mais où ? avant ou après le >> ? Complètement à la fin de la ligne, après le chemin du fichier log, cemme cela: > fichier_log 2>&1 J'ai aussi vu que, pour redémarrer le service cron, on avait conseillé ici sur le forum de rajouter "env - " devant /usr/syno/etc/rc.d/S04crond.sh stop. Est-ce que si je mets "env - python2.6 /volume1/@choses/gandyn/filemoi-ca.py" ça ne fonctionnerait pas ? "env -" sert à démarrer la commande qui suit avec un environnement minimum. Dans le cas du redémarrage du cron, ça sert a s'assurer, lorsque'on le redémarre, que ce service s'exécute dans le même contexte que celui qu'il recoit lorsqu'il est exécuté au démarrage du syno. Ce n'est pas notre problème ici. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amsonia Posté(e) le 28 avril 2013 Auteur Partager Posté(e) le 28 avril 2013 Merci pour tout, j'ai bien appris, tu m'as beaucoup aidé ! Mes "autres" problèmes étaient en fait exactement la même chose mais sur d'autres domaines, un seul problème donc. J'ai finalement choisi l'option de mettre le chemin réel vers python (/opt/bin/python2.6) en entête de mes scripts. Merci pour les explications sur les autres solutions, je garde ça en mémoire pour l'avenir Et merci aussi pour cette explication courte, simple et néanmoins efficace du "env - " ;-) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.