Il semplice script bash non cron correttamente

Sep 29 2020

Sto tentando di cron un semplice script bash sul mio laptop macbook-pro. In definitiva, vorrei prima farlo funzionare per lo script bash e poi passare ai miei script python. Ho creato un semplice file bash (denominato hello.sh) con il codice seguente:

#!/bin/bash

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

E my crontab -eè designato come segue:

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

Tuttavia, non ottengo nulla dopo aver atteso un minuto.

Dopo aver cercato su Google, ho concluso che forse stavo incappando nel problema "gotcha" (cron che legge parametri diversi da env). Quindi ho messo in coda quanto segue:

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

ed è prodotto come segue

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

l'esecuzione envnel mio terminale produce i seguenti parametri rilevanti:

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

Ho aggiunto le impostazioni dei parametri di cui sopra al mio script hello.sh ma non ottengo ancora nulla.

Qualcuno può indicare qual è il mio problema qui?

Risposte

2 bmike Sep 29 2020 at 07:31

Questi sono errori di autorizzazione e percorso, facilmente risolvibili.

Cerca nelle preferenze di sistema per concedere l'accesso completo al disco ai tuoi file binari e disattiva PATH negli script per catturare tutti i percorsi che non sono completi.

Raccomando /usr/local/binper facilità di mantenere gli script che desideri avere launchdo cronda pianificare.

Tuttavia, non c'è motivo per cui non puoi eseguire dalla tua cartella utente se ti si addice.