Le script bash simple ne cron correctement

Sep 29 2020

J'essaie de créer un simple script bash sur mon ordinateur portable macbook-pro. En fin de compte, j'aimerais d'abord que cela fonctionne pour le script bash, puis passer à mes scripts python. J'ai créé un fichier bash simple (nommé hello.sh) avec le code ci-dessous:

#!/bin/bash

echo "Hello World" >> /Users/myusername/Desktop/test.txt

Et mon crontab -eest désigné comme suit:

* * * * * /bin/bash /Users/myusername/Desktop/bash-files/hello.sh

Cependant, je n'obtiens rien après avoir attendu une minute.

Après avoir cherché sur Google, j'ai conclu que peut-être que je rencontrais le problème "gotcha" (cron lisant des paramètres différents de env). J'ai donc mis en file d'attente ce qui suit:

* * * * * env > /tmp/env.output

et c'est sortie comme suit

SHELL=/bin/sh
USER=myusername
PATH=/usr/bin:/bin
PWD=/Users/myusername
SHLVL=1
HOME=/Users/myusername
LOGNAME=myusername
_=/usr/bin/env

s'exécuter envdans mon terminal produit les paramètres pertinents suivants:

SHELL=/bin/zsh
USER=myusername
PATH=/Users/myusername/opt/anaconda3/bin:/Users/myusername/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin
PWD=/tmp
SHLVL=1
HOME=/Users/myusername
LOGNAME=myusername
_=/usr/bin/env

J'ai ajouté les paramètres ci-dessus à mon script hello.sh mais je n'obtiens toujours rien.

Quelqu'un peut-il indiquer quel est mon problème ici?

Réponses

2 bmike Sep 29 2020 at 07:31

Ce sont des erreurs de permission et de chemin, facilement résolues.

Regardez dans les préférences système pour accorder un accès complet au disque à vos binaires et désélectionnez PATH dans vos scripts pour détecter les chemins qui ne sont pas complets.

Je recommande /usr/local/binpour la facilité de maintenir tous les scripts que vous souhaitez avoir launchdou cronplanifier.

Cependant, il n'y a aucune raison pour laquelle vous ne pouvez pas exécuter à partir de votre dossier utilisateur si cela vous convient.