Page 1 sur 5

Problème avec crontab

Posté : sam. 16 sept. 2017 11:47
par Ferois
Bonjour,

Avec ‘sudo crontab -e' j'ai ajouté deux lignes :
0 8 * * * /home/alarme/ras_journalier.py > /dev/null
***/15 * * * * /home/alarme/ventil.py > /dev/null

La première fonctionne parfaitement, mais pas la seconde !
J'ai alors remplacé :
> /dev/null
par :
>> /home/pi/journal.txt 2>&1
et j'obtiens en réponse :
/bin/sh: 1: /home/alarme/ventil.py: not found

Bien sûr les deux programmes sont présents dans le même registre et ont les même droits.

Pouvez-vous m'expliquer ?
Merci d'avance ! :

Re: Problème avec crontab

Posté : sam. 16 sept. 2017 17:07
par guillaume9344
Bonjour, je crois qu'il y a un peu trop d'étoile dans la deuxième commande :

Code : Tout sélectionner

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  user command to be executed
de plus /15 ne doit pastre reconnu comme horaire.

Re: Problème avec crontab

Posté : sam. 16 sept. 2017 18:42
par Ferois
Oups!
C'est bien :
*/15 * * * * /home/alarme/ventil.py > /dev/null
avec 5 étoiles.
Le */15 est parfaitement reconnu et me sort bien "/bin/sh: 1: /home/alarme/ventil.py: not found" tous les quarts d'heure !

Re: Problème avec crontab

Posté : sam. 16 sept. 2017 19:16
par destroyedlolo
Salut,

Est-ce que l'utilisateur a bien acces à ton fichier ? que dit

Code : Tout sélectionner

ls -l /home/alarme/ventil.py
Quel est l'interpréteur de ton fichier .py ? Est-il lui aussi accessible ?

Code : Tout sélectionner

head 1 /home/alarme/ventil.py

Re: Problème avec crontab

Posté : sam. 16 sept. 2017 19:19
par destroyedlolo
Salut,

Est-ce que le fichier est bien accessible à ton user ? Que donne

Code : Tout sélectionner

ls -l /home/alarme/ventil.py
Quel est l'interpréteur utilisé et est-il accessible ?

Code : Tout sélectionner

head -1 /home/alarme/ventil.py

Re: Problème avec crontab

Posté : sam. 16 sept. 2017 19:43
par Ferois
Merci à tous !
A la lecture du message de Fred (télémaintenance) j'ai ajouté "python", et là, miracle, ça marche !
Mais pourquoi la première ligne, sans python marche aussi ???

Re: Problème avec crontab

Posté : dim. 17 sept. 2017 12:40
par Korhm
Pour réponse à "pourquoi ca marche pour la 1ère ligne", regardes les indices laissés par destroyedlolo juste au dessus, et regarde du côté de "Shell bang"
En gros, le mot "Python" que tu mets devant le nom du script, en général ça se met plutôt en toute première ligne du script. Par exemple

Code : Tout sélectionner

#!/bin/python
Pour indiquer à ton Shell quel interpréter utiliser.

Re: Problème avec crontab

Posté : lun. 18 sept. 2017 13:57
par Ferois
Korhm a écrit :en général ça se met plutôt en toute première ligne du script. Par exemple
Bien d'accord avec toi, la première ligne des deux programmes est :

Code : Tout sélectionner

#!/usr/bin/python
"python" renvoyant à "python2.7" dans le même dossier.

Re: Problème avec crontab

Posté : mer. 20 sept. 2017 11:51
par zeb
plop,

Ah, un problème UNIX classique !
le crond de Ferois a écrit :

Code : Tout sélectionner

/bin/sh: 1: /home/alarme/ventil.py: not found
Hum, ça ressemble à un problème d'exécution.

Première chose à faire, lancer le programme directement dans un shell.
On devrait avoir les mêmes symptômes.

Vérifier :
  1. Les droits d'exécution

    Code : Tout sélectionner

    $> chmod +x /home/alarme/ventil.py
  2. Les droits des différents acteurs, user (propriétaire), exécuteur (quel cron, user ou root ?), etc.
  3. Le hashbang

    Code : Tout sélectionner

    #!/usr/bin/python
  4. L'encodage du fichier. Un grand classique, c'est d'avoir un caractère ^M (0x13) en fin de hashbang quand on a écrit le programme sous Windows. Pour s'en convaincre :

    Code : Tout sélectionner

    $> head -1 /home/alarme/ventil.py | cat -vte
  5. Ça semble ne pas être le cas, mais souvent les différences de fonctionnement entre un lancement à la main et un lancement par cron viennent de l'environnement. L'utilisateur utilise le bash ou le kornshell avec ses variables personnelles, et cron utilise le bourne shell (sh) sans fioriture.

Re: Problème avec crontab

Posté : jeu. 21 sept. 2017 14:11
par Ferois
Putain de line feed !
zeb a écrit : lancer le programme directement dans un shell
Je l'ai lancé dans la console et là j'obtiens :

Code : Tout sélectionner

/home/alarme/ventil.py^M : mauvais interpréteur : aucun fichier ...
Sous mc, et en hexa j'ai remplacé 0A par 00 et c'est tout bon !
Toujours sous mc, on voit le ^M avec Modif (f4) mais avec Voir (f3) on voit rien :lol: