Tout le monde connaît cron. Non ? Bon, c'est pas grave.
Rapidement, c'est un dæmon qui permet d'exécuter périodiquement des commandes. Ces commandes sont stockées dans ce qu'on appelle des crontabs et sont exécutées avec les droits de la personne à qui appartient la crontab. Par exemple, c'est idéal pour un script de sauvegarde.
Seulement ça ne fonctionne pas toujours comme il faudrait ! J'ai eu le problème hier au boulot : un script qui fonctionnait parfaitement en ligne de commande ne fonctionnait pas quand il était lancé par cron.
Le problème est que cron utilise bien les droits du propriétaire de la crontab mais pas ses variables d'environnement. Pour remettre votre script d'aplomb, il faut utiliser la commande su en lui passant votre script en argument. Appelez donc votre script avec :
su user -c "script et arguments && exit"
Bien sûr, si votre crontab appartient à root, il est inutile de spécifier l'utilisateur.
Attention, ne vous amusez pas à mettre un autre utilisateur que le propriétaire de la table (sauf si c'est root), sinon votre script restera bloqué sur la demande de mot de passe de l'utilisateur.