Problème crontab
Résolu/Fermé
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
-
12 sept. 2011 à 18:10
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 31 oct. 2011 à 23:44
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 31 oct. 2011 à 23:44
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 sept. 2011 à 18:58
12 sept. 2011 à 18:58
Salut,
Essaie de sourcer ton .bashrc (ou assimilé en fonction de ton shell), parce que je doute que les variables "$PATH" et "$HOME"soient connues de la crontab ;-((
De même mets les chemin absolus pour tes commandes (/bin/rm, /bin/ln, etc.)
Essaie de sourcer ton .bashrc (ou assimilé en fonction de ton shell), parce que je doute que les variables "$PATH" et "$HOME"soient connues de la crontab ;-((
De même mets les chemin absolus pour tes commandes (/bin/rm, /bin/ln, etc.)
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
Modifié par jisisv le 16/09/2011 à 15:06
Modifié par jisisv le 16/09/2011 à 15:06
J'ai ajouté une entrée cron
Ceci ne pose aucun problème:
Les utiltaires (en particulier env sont dans le PATH puisque
J'ai mis un PATH explicite dans maon script.
Conclusion:
la redirection sur la ligne cron fonctionne (shuffwall.has_run)
Si le script était exécuté, même les echo produiraienr une sortie dans ce fichier, or il est de taille nulle.
Extrait de /va/log/syslog
J'ai également essayé un sourcescript_name dans le cron afin d'être certain de récupérer l'environnement fourni par cron.
Je me perds en conjectures...
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
10 13 * * * env > /home/johand/tmp/crontab_env
Ceci ne pose aucun problème:
johand@osiris:~/tmp$ ls -l crontab_env ; cat crontab_env -rw-r--r-- 1 johand johand 118 16 sep 13:10 crontab_env LANGUAGE=fr_BE:fr HOME=/home/johand LOGNAME=johand PATH=/usr/bin:/bin LANG=fr_BE.UTF-8 SHELL=/bin/sh PWD=/home/johand
Les utiltaires (en particulier env sont dans le PATH puisque
johand@osiris:~/tmp$ which tee ln rm /usr/bin/tee /bin/ln /bin/rm
J'ai mis un PATH explicite dans maon script.
PATH="/bin:/usr/bin"
Conclusion:
la redirection sur la ligne cron fonctionne (shuffwall.has_run)
Si le script était exécuté, même les echo produiraienr une sortie dans ce fichier, or il est de taille nulle.
Extrait de /va/log/syslog
Sep 16 14:40:01 osiris /USR/SBIN/CRON[26479]: (johand) CMD ([26479] source /home/johand/bin/shuffwall.sh > /home/johand/tmp/shuffwall.has_run
J'ai également essayé un sourcescript_name dans le cron afin d'être certain de récupérer l'environnement fourni par cron.
Je me perds en conjectures...
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
Non... comment je suis passé à côté de ça...
Tes echo et ton tee écrivent dans /home/johand/tmp/NEWPATH
Ton script n'écrit rien sur la sortie standard, donc c'est normal que /home/johand/tmp/shuffwall.has_run soit vide.
Pour le problème d'exécution :
1) Ajoute un set -x au début de ton script
2) Redirige la sortie d'erreur dans un fichier ( 2>/tmp/stderr )
Tes echo et ton tee écrivent dans /home/johand/tmp/NEWPATH
Ton script n'écrit rien sur la sortie standard, donc c'est normal que /home/johand/tmp/shuffwall.has_run soit vide.
Pour le problème d'exécution :
1) Ajoute un set -x au début de ton script
2) Redirige la sortie d'erreur dans un fichier ( 2>/tmp/stderr )
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
31 oct. 2011 à 23:44
31 oct. 2011 à 23:44
Bêête que je suis. L'erreur provenait tout simplement d'une mauvaise orthographe du nom du script dans mon cron.
Modifié par jisisv le 12/09/2011 à 19:38
Par contre
36 19 * * * touch ${HOME}/tmp/mycrontab.works
fonctionne. HOME est bien défini..
Johan
12 sept. 2011 à 20:02
Tu la modifies certes, mais rien ne nous dit que "$PATH" est bien déclaré avant ;-(
D'où ma proposition de sourcer ton environnement ;-)
13 sept. 2011 à 08:31
Je confirme : par sécurité, tout cronjob s'exécute dans un environnement quasi-vierge. Il faut déclarer explicitement toutes les variables d'environnement, soit dans le script, soit en sourçant son environnement.
Notamment, tu lances la commande tee sans chemin absolu avant de déclarer le PATH.