C'est faux à bien des égards :) ... mais, c'est bon, nous allons arranger ça ensemble.
Premier niveau
cron
est un démon/service permettant d'exécuter des commandes programmées ... Vous Ne le fais pas. ajoutez-y vos tâches cron ... vous ajoutez vos tâches cron de l'utilisateur crontab
comme ça :
crontab -e
ou à la racine crontab
comme ça :
sudo crontab -e
Il sera ensuite exécuté par cron
automatiquement... C'est tout.
Deuxième niveau
sh \home\Folder1\execute.sh
est un chemin d'accès de style Windows qui n'est pas valide sur Ubuntu et sera traduit par un nom de fichier unique (pas un chemin d'accès) comme ceci :
sh homeFolder1execute.sh
il devrait être avec la barre oblique /
et non la barre oblique inversée, par exemple :
sh /home/Folder1/execute.sh
Troisième niveau
Su export PATH="/home/Folder1"
n'est pas l'utilisation correcte qui pourrait donner le résultat que vous attendez de l'ajout de /home/Folder1
à PATH ... au lieu de cela, il remplacera tout ce qui se trouve déjà dans la variable d'environnement PATH par seulement /home/Folder1
et c'est un autre problème ... pour juste ajouter /home/Folder1
vous devez le faire comme ça :
export PATH="$PATH:/home/Folder1"
Niveau de bonus
En règle générale, lorsque vous utilisez crontab
en général et de la racine crontab
en particulier, indiquez le chemin complet de l'exécutable/s sur votre système (vous pouvez le trouver avec par ex. which sh
) comme suit :
/usr/bin/sh /home/Folder1/execute.sh
Utilisez également le chemin complet des exécutables qui sont utilisés dans votre script par exemple :
/usr/bin/python3 -m venv venv
et :
/usr/bin/python3 /home/Folder1/main.py
et :
/usr/bin/pip install python-dotenv
Bien que, pour les deux derniers, cela fonctionnera avec seulement python
y pip
dans un environnement virtuel Python comme vous le faites dans votre script.
Sinon, l'exécution de Shell pourrait échouer à trouver le chemin vers votre/vos commande(s) comme par exemple la variable d'environnement PATH de la racine renverra des chemins différents de ceux renvoyés par la variable d'environnement PATH de votre utilisateur. .
Vous pouvez, cependant, économiser en spécifiant le chemin complet de votre fichier script ainsi que d'autres script/files sourcés/référencés dans celui-ci par, d'abord, cd
dans le répertoire qui le contient dans la ligne crontab comme ceci :
cd /home/Folder1 && /usr/bin/sh execute.sh
Cela ne vous empêchera pas de ne pas fournir le chemin d'accès complet aux exécutables sur votre système, comme par exemple /usr/bin/sh
vous devez quand même les fournir ... pourquoi pas le chemin complet vers cd
? vous pourriez vous demander... eh bien, la réponse est la suivante cd
est une commande intégrée de Shell. et fonctionnera très bien sans avoir besoin d'un chemin.