Tache cron.hourly qui ne s'execute pas

Bonjour. J’ai paramétré mon raspi avec ssmtp sur une adresse gmail. J’ai placé mon script ip-ext.sh dans cron.hourly et l’ai rendu exécutable
ls -ls
total 12
4 -rwxr-xr-x 1 root root 191 oct. 1 2014 fake-hwclock
4 -rwxr-xr-x 1 root root 1254 juil. 1 00:02 ip-ext.sh
Chaque jour il devrait s’exécuter mais je reçois autre chose.
La réponse était :

DNS Error: 7206194 DNS type 'mx' lookup of raspberrypi responded with code NXDOMAIN Domain name not found: raspberrypi 

Par contre si manuellement je démarre le script
sudo sh ip-ext.sh
tout fonctionne à merveille.
Ce que je ne comprends pas, c’est pourquoi le dossier cron.hourly n’est pas lu.
Si quelqu’un a une idée…
Merci.

Bonjour,

Avez-vous créé le cron avec l’utilisateur faisant parti du groupe sudo ?
sudo crontab -e
n’est pas pareil que
crontab -e

Que vous dit un :
cat /var/log/syslog|grep cron

Désolé, j’étais parti un bon moment, mais me revoila à la maison. Les problèmes n’ont pas changé d’un iota. Voici la réponse à la question:
Oct 3 07:17:01 raspberrypi /USR/SBIN/CRON[8054]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 08:17:01 raspberrypi /USR/SBIN/CRON[8064]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 09:17:01 raspberrypi /USR/SBIN/CRON[8074]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 10:17:01 raspberrypi /USR/SBIN/CRON[8084]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 11:17:01 raspberrypi /USR/SBIN/CRON[8094]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 12:17:01 raspberrypi /USR/SBIN/CRON[8113]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 13:17:01 raspberrypi /USR/SBIN/CRON[8123]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 13:17:18 raspberrypi /usr/sbin/cron[2015]: (CRON) INFO (pidfile fd = 3)
Oct 3 13:17:18 raspberrypi /usr/sbin/cron[2016]: (CRON) STARTUP (fork ok)
Oct 3 13:17:18 raspberrypi /usr/sbin/cron[2016]: (CRON) INFO (Running @reboot jobs)
Oct 3 15:17:01 raspberrypi /USR/SBIN/CRON[2215]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 16:17:01 raspberrypi /USR/SBIN/CRON[2225]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 17:17:01 raspberrypi /USR/SBIN/CRON[2235]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 18:17:01 raspberrypi /USR/SBIN/CRON[2245]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 19:17:01 raspberrypi /USR/SBIN/CRON[2255]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 20:17:01 raspberrypi /USR/SBIN/CRON[2265]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 21:17:01 raspberrypi /USR/SBIN/CRON[2275]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Oct 3 22:17:01 raspberrypi /USR/SBIN/CRON[2285]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)

Voila. J’ai enfin pu réparer ssmtp pour qu’il fonctionne correctement. bsd-mailx ne me donnant aucun résultat. Maintenant j’ai le vrai message:
/etc/cron.daily/man-db:
/usr/bin/mandb: impossible d’écrire dans /var/cache/man/5369: Aucun espace disponible sur le périphérique
run-parts: /etc/cron.daily/man-db exited with return code 2
Il me semble que c’est ça qui empêche l’exécution de mon script.

df
Sys. fich.     1K-blocks   Util. Disponible Uti% Monté sur
/dev/root        3023728 2891308          0 100% /
devtmpfs          218416       0     218416   0% /dev
tmpfs              44540     228      44312   1% /run
tmpfs               5120       0       5120   0% /run/lock
tmpfs              89060       0      89060   0% /run/shm
/dev/mmcblk0p1     57288   20368      36920  36% /boot
/dev/sda1       60848148 3832408   53901760   7% /media
tmpfs              89060       0      89060   0% /tmp

Est ce bien normal d’avoir un /dev/root occupé à 100% ?
Je vais essayer de trouver une réponse et je reviens.

EDIT: faire
sudo raspi-config
option 1

Et voila le résultat:

df
Sys. fich.     1K-blocks   Util. Disponible Uti% Monté sur
/dev/root       15186900 2894460   11625104  20% /
devtmpfs          218416       0     218416   0% /dev
tmpfs              44540     228      44312   1% /run
tmpfs               5120       0       5120   0% /run/lock
tmpfs              89060       0      89060   0% /run/shm
/dev/mmcblk0p1     57288   20368      36920  36% /boot
/dev/sda1       60848148 3832408   53901760   7% /media
tmpfs              89060       0      89060   0% /tmp

Et me revoila avec mon problème. Cette fois:
df
Sys. fich. 1K-blocks Util. Disponible Uti% Monté sur
/dev/root 15186900 3059400 11460164 22% /
devtmpfs 218416 0 218416 0% /dev
tmpfs 44540 232 44308 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 89060 0 89060 0% /run/shm
/dev/mmcblk0p1 57288 20368 36920 36% /boot
/dev/sda1 60848148 4010240 53723928 7% /media
Mais les tâches cron ne s’exécutent pas.
Pourtant:
Mon fichier est bien placé
/etc/cron.hourly $ ls
fake-hwclock ip-emis_isabelle.sh

mais ma framboise n’exécute rien.

pi@raspberrypi /etc/cron.hourly $ /etc/init.d/cron status
[ ok ] cron is running.
pi@raspberrypi /etc/cron.hourly $ crontab -l
no crontab for pi
pi@raspberrypi /etc/cron.hourly $ sudo crontab -l
no crontab for root

Qu’elle est la fonction à vérifier pour voir si les tâches crons ne sont pas bloquées quelque part ?
Je suis surpris par la dernière réponse. Pourtant il me semblait suffisant de placer un script dans les directory appropriées.
Merci.

Pour voir si il ya de l’activité cron

grep -i cron /var/log/*

Véririfer les heures d’execution.

A+

Super cette commande. Je me la note… Mais voilà le résultat: (la fin seulement)
/var/log/syslog.1:Jan 29 05:17:01 raspberrypi /USR/SBIN/CRON[3375]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
/var/log/syslog.1:Jan 29 06:17:01 raspberrypi /USR/SBIN/CRON[3385]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
/var/log/syslog.1:Jan 29 06:25:01 raspberrypi /USR/SBIN/CRON[3395]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))

Il est 23H45 à l’heure ou j’écris cette ligne. Je vais le rebooter pour voir.

Ce fichier n’est pas la dernière génération, il doit y avoir un /var/log/syslog. Si celui-ci n’existe pas ou ne se rempli pas c’est soit dû a un filesystem plein soit un problème d’écriture sur le disque.

A+

Effectivement /var/log/syslog.1 ne correspond pas au dernier log mais le tout se mélange. Pour faire simple j’ai effacé tous les logs.
Maintenant je n’ai plus de log. Il me reste /var/log/ mais le dossier reste vide. Je retente un reboot, mais si je n’ai pas d’amélioration, je réinstalle tout.

EDIT: Ça y est le reboot lui a fait du bien
ls /var/log/
auth.log daemon.log debug dmesg kern.log lpr.log mail.err mail.info mail.log mail.warn messages news syslog user.log

 grep -i cron /var/log/*
grep: /var/log/news: est un dossier
/var/log/syslog:Feb  3 11:07:56 raspberrypi /usr/sbin/cron[2030]: (CRON) INFO (pidfile fd = 3)
/var/log/syslog:Feb  3 11:07:56 raspberrypi /usr/sbin/cron[2034]: (CRON) STARTUP (fork ok)
/var/log/syslog:Feb  3 11:07:56 raspberrypi /usr/sbin/cron[2034]: (CRON) INFO (Running @reboot jobs)

J’attends un peu pour voir si hourly sera lu

EDIT:
grep -i cron /var/log/*
/var/log/auth.log:Feb 3 11:17:01 raspberrypi CRON[2205]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log:Feb 3 11:17:01 raspberrypi CRON[2205]: pam_unix(cron:session): session closed for user root
grep: /var/log/news: est un dossier
/var/log/syslog:Feb 3 11:07:56 raspberrypi /usr/sbin/cron[2030]: (CRON) INFO (pidfile fd = 3)
/var/log/syslog:Feb 3 11:07:56 raspberrypi /usr/sbin/cron[2034]: (CRON) STARTUP (fork ok)
/var/log/syslog:Feb 3 11:07:56 raspberrypi /usr/sbin/cron[2034]: (CRON) INFO (Running @reboot jobs)
/var/log/syslog:Feb 3 11:17:01 raspberrypi /USR/SBIN/CRON[2206]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)

Dans cette dernière commande, je ne comprends pas pourquoi la session est fermée ?

Bonjour,

Session fermée indique seulement que le taf est fait, c’est la fin d’exécution du processus.

Dans auth.log on voit le début de l’execution de la commande de /etc/crontab

17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly

début d’éxécution 11:17:01 par le processus 2205, il appelle le processus 2206 qui lance toutes les commandes éxécutables présentent dans /etc/cron.hourly

A 11:17:01 fin de la session CRON

Pour moi cron fonctionne correctement. Le problème n’es pas là.

A+

C’est aussi ma déduction finale, mais je ne comprends pas un truc. Si dans une console je fais:
pi@raspberrypi /etc/cron.hourly $ sudo sh ip-emis_isabelle.sh

L’exécution est correcte.
Mais là où il est placé, il n’est pas exécuté par cron. pourtant les droits:
ls -ls
total 12
4 -rwxr-xr-x 1 root root 191 oct. 1 2014 fake-hwclock
4 -rwxr-xr-x 1 root root 1181 janv. 28 19:32 ip-emis_isabelle.sh

Bonjour,

Bien souvent, c’est que l’environnement de cron n’a pas tout ce qu’il faut pour exécuter correctement le programme. Il faut bien avoir en tête que le chargement des script d’environement (.bash*, .profile…) du user lançant le cron ne sont pas chargés.

En plus d’être executabe, le fichier doit avoir un shebang connu. Ensuite il faut être sûr que toutes les variables d’environnement qui sont utilisées soient bien initialisées dans le script. Et de plus, il est conseillé d’utiliser les chemins complets pour chaque commande externer (ex: cp → /bin/cp)

Enfin pour valider l’avancement du script, le temps du debug, il est souhaitable d’ajouter des lignes de « echo » vers un fichier de log.

A+

@thierryR
@jelopo

Salut,

J’avais joué avec cron à un moment (dans le temps ; c’était avec init.d)
Je n’y connais rien, mais voici mon retour « au cas où ».

Je voulais déclencher mon script toutes les 5 minutes si le RaspBerry était en route.

Modif du fichier crontab :
sudo nano /etc/crontab

Au début, je faisais :
*/5 * * * * /home/pi/webcam/transfert.sh

Mais ça ne fonctionnait pas, alors qu’en manuel, ça tournait.
J’ai cru devenir dingue.

En fait, il fallait aller dans le dossier et lancer le script de cette façon :
*/5 * * * * cd/home/pi/webcam && bash transfert.sh

Ensuite, j’ai rechargé :
/etc/init.d/cron reload

Et, enfin, ça avait fonctionné en automatique.

Merci chers amis de m’aider à y voir clair. Ce n’est pas évident. Pour tout dire:
Jen’ai rien mis dans le crontab. J’ai placer mon script dans /etc/cron.hourly Donc il doit être exécuté régulièrement.
J’ai bien mis le shebang habituel.
J’ai mis plein de echo
Mais je n’ai rien en sortie. C’est comme si le fichier n’est pas lu.
Mais en exécutant dans une console, j’ai trouvé un truc. Je ne sais pas si c’est bloquant.
Aux lignes::
echo " sauvegarde \n"$newip | mail -s"Du serveur chezThierry" $ISAMAIL
echo " MaMaison \n"$newip | mail -s"Raspberry ici" $MYMAIL
En réponse j’ai ::
Unknown command: « allias »
Unknown command: « allias »

Je ne sais pas interpréter cette réponse.

Bonjour,

Déjà être sûr que cron.hourly s’éxecute en ajoutant un script exécutable simple qui écrit dans un fichier de log et c’est tout.

#!/bin/bash
echo `date +"%D %T"` >> /tmp/cron_h.log

Ensuite modifier le script pour qu’il fonctionne dans une console en ligne de commande.

Unknown command: « allias » signifie que cette commande est inconnue ! Effectivement, c’est alias avec un seul l qui est connue. Mais de toute façon même après correction, cela ne fonctionnera pas dans cron, car les fichier .bashrc ou .bash_aliases qui contiennent la définition des alias ne sont pas lus.

A+