Script bash simples não cron corretamente

Sep 29 2020

Estou tentando cron um script bash simples no meu laptop macbook-pro. No final das contas, eu gostaria primeiro de fazer isso funcionar para o script bash e, em seguida, passar para os meus scripts Python. Criei um arquivo bash simples (denominado hello.sh) com o código abaixo:

#!/bin/bash

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

E meu crontab -eé designado da seguinte forma:

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

No entanto, não recebo nada depois de esperar um minuto.

Depois de pesquisar no Google, concluí que talvez estivesse encontrando o problema "peguei" (cron lendo parâmetros diferentes de env). Então, coloquei na fila o seguinte:

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

e sua saída é a seguinte

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

rodando envem meu terminal produz os seguintes parâmetros relevantes:

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

Eu adicionei as configurações de parâmetro acima ao meu script hello.sh, mas ainda não recebo nada.

Alguém pode apontar qual é o meu problema aqui?

Respostas

2 bmike Sep 29 2020 at 07:31

Esses são erros de permissão e caminho, facilmente resolvidos.

Procure nas preferências do sistema para conceder acesso total ao disco para seus binários e desmarque PATH em seus scripts para capturar quaisquer caminhos que não estejam completos.

Eu recomendo /usr/local/binpara facilidade de manutenção de quaisquer scripts que você deseja ter launchdou cronagendar.

Não há razão para que você não possa executar a partir de sua pasta de usuário, se isso for conveniente para você.