Environnement d’exécution différents entre l’utilisateur et le cron de l’utilisateur

Une simple brève pour rappeler qu’un utilisateur que ce soit root ou un autre n’a pas le même environnement d’exécution que le cron de cet utilisateur. En d’autres termes ce n’est pas parce qu’une commande s’exécute correctement lorsque que l’on est connecté en tant que l’utilisateur X que cette même commande s’exécutera correctement dans un cron de l’utilisateur X (test fait sous debian).

L’environnement étant différent l’accès à certaines commandes ne se fait pas toujours de la même façon.
Ceux sont souvent des scripts peu classiques, par exemple un script de renouvellement automatique pour let’s encrypt comme proposé ici, s’exécutera très bien en root en ne tapant pas le chemin complet vers le script mais pas via le cron de root si vous n’indiquez pas le chemin complet vers le script. Il faut donc penser à tester ces crons, de manière quasi systématique pour être certains de la bonne exécution de ceux-ci.

Et voilà 😉

Une réflexion au sujet de « Environnement d’exécution différents entre l’utilisateur et le cron de l’utilisateur »

  1. Tout à fait. D’ailleurs par habitude, on précise le chemin complet des scripts dans la crontab, y compris au niveau des appels à bundle exec pour les taches rake :

    `*/15 * * * * cd /home/deploy/www/current && RAILS_ENV=production /home/deploy/.rbenv/shims/bundle exec rake app:mytask« 

    Ceinture+bretelles comme on dit par chez nous. 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.