1 votes

Échec du cronjob avec /usr/bin/env

J'ai un script qui fonctionne parfaitement si je l'exécute manuellement à partir de la ligne de commande. Cependant, lorsqu'il est exécuté via cron, la tâche échoue avec l'erreur suivante :

/usr/bin/env : escript : Aucun fichier ou répertoire de ce type

La première ligne du script est la suivante :

#!/usr/bin/env escript

La seule chose que je peux comprendre est qu'escript n'est pas trouvé, et c'est parce qu'il n'est pas installé dans /usr/bin, mais dans un sous-répertoire du répertoire personnel de l'utilisateur.

Si j'ai bien compris - peut-être mal compris - cron exécute chaque tâche dans la crontab d'un utilisateur sous l'UID/GID de l'utilisateur. Ne devrait-il pas également hériter de la variable PATH de l'utilisateur ? Tout doit-il être spécifié en tant que chemin absolu ?

1voto

Damian Powell Points 315

Cron s'exécute sous l'UID de l'utilisateur, mais avec un minimum d'informations. PATH . Votre script doit utiliser un chemin complet vers l'interpréteur (escript) ou vous devez définir le paramètre PATH dans la crontab.

0voto

mmmmmm Points 5716

Cron n'hérite pas du PATH de la configuration interactive de l'utilisateur. Le PATH est défini à "/usr/bin:/bin"

Vous pouvez définir des variables d'environnement sur la ligne crontab

Voir man crontab pour plus de détails, par exemple man crontab

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X