J'ai rencontré un problème lors de l'exécution d'un script à partir de crontab. Après quelques recherches, j'ai compris que le problème était dû au fait que le paramètre PATH n'inclut pas / sbin.
J'ai regardé ce qu'il inclut dans / etc / crontab:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Comme test - tâche cron simple pour imprimer la variable PATH:
* * * * * echo $PATH &> /root/TMP.log
la sortie est:
cat /root/TMP.log
/usr/bin:/bin
Je ne comprends pas ce comportement ... Comment définir la variable PATH ..? Ou mieux - comment y ajouter des chemins?
bash -lc
n'aide pas. Je suis bon pour l'instant avec la configuration manuelle de PATH, mais si j'installe certains scripts, je veux qu'ils soient reconnus dans les cronjobs sans spécifier de chemins complets. Je suis sûr que c'est possible d'une manière ou d'une autre etbash -lc
est sur le point de trouver une solution :)Si vous avez besoin de PATH par défaut à l'échelle du système et d'autres variables ENV (qui sont définies dans /etc/profile.d), mettez simplement ce qui suit:
la source
Il est possible de définir le CHEMIN (ou d'autres paramètres) dans la ligne cronjob ou sur une seule ligne. Mais vous ne pouvez pas utiliser l'extension shell comme
PATH=$PATH:/usr/local/bin
. Mais le tilde est autorisé pour les raccourcis du répertoire personnel.D'après les livres:
Voir
man 5 crontab
pour plus d'informations.Cela devrait donc fonctionner:
la source
J'ai eu le même problème et j'ai trouvé un autre moyen d'exécuter mon script dans crontab. Je pense que la façon la plus simple d'exécuter votre programme est de créer un script qui pourrait se placer dans le répertoire de votre programme. Appelez ensuite votre programme dans ce script.
voici un exemple de script (nom du script = launcher.sh):
ensuite, rendez votre script exécutable:
Et enfin, ajoutez votre script à crontab
et ajoutez cette ligne à la fin:
(J'ai configuré le programme pour qu'il s'exécute à chaque redémarrage)
la source