Salut,
Je reviens à la charge avec, on peut le dire, un problème à la CRON!
Le fait est que j’ai fait un script qui me sert à backupper des sites web (data + BDD), qui marche très bien lorsque je l’exécute manuellement, mais qui ne s’exécute pas entièrement avec CRON.
Voici toutes les infos dont vous aurez besoin pour m’aider, car je n’arrive pas à faire avancer le schmilblick.
Ma Crontab:
# crontab -e
# m h dom mon dow command
01 * * * * root run-parts /etc/cron.hourly >> /var/log/cron
02 13,19 * * 1-5 root run-parts /etc/cron.daily >> /var/log/cron
Mon /etc/cron.daily:
-rwxr--r-- 1 root root 1249 2008-01-31 13:08 dump_site1
-rwxr--r-- 1 root root 1333 2008-01-31 13:11 dump_site2
-rwxr--r-- 1 root root 1275 2008-01-31 13:09 dump_site3
-rwxr--r-- 1 root root 1314 2008-01-31 13:09 dump_site4
[code]# vi /etc/crontab
/etc/crontab: system-wide crontab
Unlike any other crontab you don’t have to run the `crontab’
command to install the new version when you edit this file
and files in /etc/cron.d. These files also have username fields,
that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
[/code]
Comme vous le savez, sh est le shell par défaut sous debian, ce qui n’est pas le cas sous Red Hat par exemple où ce sera le bash. Je dis ceci car j’ai importé ces scripts d’un autre serveur (Red Hat) et qu’il fonctionnaient avec un Sha-bang de type #!/bin/bash que j’ai donc transformé en #!/bin/sh pour que cela fonctionne avec cron.
J’ai même été surpris de voir qu’il fallait également que j’enlève mes terminaisons de type dump_site1.sh.
Le fait est qu’actuellement, si j’effectue un
anacron -n -f
, tous mes scripts se lancent et font leur travail correctement, comme lorsque je les appelle manuellement avec ./dump_site1
.
Bref, ce matin, le cron.daily ne m’a donné que les dumps mysql, et non pas les archives en .tar que j’attendais.
J’ai également vérifié TOUTES mes variables d’environnement des scripts, elles sont toutes dans les chemins cités dans le PATH de /etc/crontab
Pour info, mon script consiste simplement a faire un dump d’une base, prendre le répertoire dans /var/www, faire une archive .tar.gz du tout, le stocker dans un répertoire donné, et renvoyer le tout par rsync sur un autre serveur.
Et je le redis, tout fonctionne correctement en manuel, je ne vois pas mon erreur, qui doit être stupide, j’en conviens!
Si quelqu’un a une idée, merci d’avance!