Простой скрипт bash неправильно cron

Sep 29 2020

Я пытаюсь cron простой сценарий bash на моем ноутбуке macbook-pro. В конечном счете, я хотел бы сначала заставить это работать для сценария bash, а затем перейти к моим сценариям python. Я создал простой файл bash (с именем hello.sh) с приведенным ниже кодом:

#!/bin/bash

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

А мой crontab -eобозначается следующим образом:

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

Однако после минуты ожидания я ничего не получаю.

Погуглив, я пришел к выводу, что, возможно, я столкнулся с проблемой "gotcha" (cron читает параметры, отличные от других env). Итак, я поставил в очередь следующее:

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

и он выводится следующим образом

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

запущенный envв моем терминале, производит следующие соответствующие параметры:

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

Я добавил указанные выше настройки параметров в свой скрипт hello.sh, но все равно ничего не получил.

Может ли кто-нибудь указать, в чем моя проблема?

Ответы

2 bmike Sep 29 2020 at 07:31

Это ошибки разрешений и пути, которые легко разрешаются.

Посмотрите в системных настройках, чтобы предоставить полный доступ к диску для ваших двоичных файлов, и отключите параметр PATH в ваших сценариях, чтобы перехватить любые незавершенные пути.

Я рекомендую /usr/local/binдля простоты поддержки любые скрипты, которые вы хотите иметь launchdили cronзапланировать.

Однако нет причин, по которым вы не можете запустить из своей пользовательской папки, если вам это подходит.