1 votes

Veuillez traduire ceci en conservant les mêmes balises HTML s'il en existe : file d'attente cron pour les scripts bash et python

Je cherche actuellement à comprendre et à me familiariser avec les files crontab sur mon macbook pro. J'ai récemment résolu un problème où mon simple script bash ne s'exécutait pas. Il s'est avéré que je devais déplacer mon script bash et sa sortie dans le chemin /Users/myusername/. Avant, je l'avais dans le /Users/myusername/Desktop/. Ce message peut être trouvé ici - https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

Ma question : Est-ce que tous mes scripts bash et python doivent être toujours situés dans le chemin /Users/myusername ? N'y a-t-il pas de solution de contournement ?

3voto

Seamus Points 3171

Question:

Ma question : Est-ce que tous mes scripts bash et python doivent toujours être situés dans le chemin /Users/myusername? N'y a-t-il pas de contournement possible?

Réponse :

Non. Vous pouvez placer vos scripts bash et python où vous le souhaitez. Cependant, il y a des exigences supplémentaires:

  1. Vos tâches cron s'exécutent avec un ENVIRONNEMENT différent lorsque vous les exécutez; par exemple $PATH. Par conséquent, vous devriez utiliser une spécification de chemin complet pour spécifier vos scripts dans le crontab; par exemple utilisez :

            • /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  2. Sur mon Mac (Catalina), j'ai trouvé nécessaire de donner des privilèges "Accès complet au disque" à cron. Votre expérience peut varier sur une version du système d'exploitation différente. Voici comment faire :

Préférences Système -> Sécurité & Confidentialité -> onglet Confidentialité:

enter image description here

  1. Au moins pendant le debugging de votre tâche cron, vous devriez envisager de rediriger les messages d'erreur (stderr) vers un fichier - sinon ils se retrouvent dans /dev/null ce qui n'est pas utile! En continuant avec l'exemple ci-dessus :

            • /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home//MyCronLog.txt 2>&1

2voto

Oskar Points 1242

Vous devez simplement vous assurer d'accorder des autorisations aux éléments et d'utiliser des chemins complets pour tout. Juste parce qu'un script s'exécute lorsque vous êtes dans une fenêtre shell interactive, ne signifie pas qu'ils sont corrects dans un shell limité.

Voici des super astuces de débogage sur une question récente.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X