Задание cron не выполняется - root работает нормально, хотя

У меня есть только что созданный сценарий, который отлично работает под root. Я добавил задание cron, но оно работает неправильно

Команды:

gpio -g mode 17 input
getval="$(gpio read 17)"
todayis=$(date) 
getstatus=$getval 
if [ "$getstatus" = "0"  ]; then 
power="Power ON"
else
power="Power OFF"
echo $todayis $power $getstatus >> /var/www/turnmeon.log

Файл журнала при запуске от имени пользователя root:

Wed Nov 8 21:11:41 UTC 2017 Power ON 0

Файл журнала при запуске как crontab:

Wed Nov 8 21:11:41 UTC 2017 Power OFF

В конце нет 1, как я можно было бы ожидать, если бы OFF действительно было правдой.

Почему он запускается в командной строке bash, но не как задание crontab

*/2 * * * * bash /myscript.sh
0
09.11.2017, 00:06
1 ответ

Вероятная причина в том, что gpioотсутствует в списке PATH, доступном в cron. Укажите полный путь к вашей команде gpio, например

getval="$(/sbin/gpio read 17)"

Узнайте, где он находится в вашей системе, используя which gpio.

Раньше меня это раздражало, потому что я много возился со встроенными решениями. Если сценарий более сложный, я обычно инициализирую PATH и LD _LIBRARY _PATH в самом начале, чтобы упростить задачу.

0
28.01.2020, 04:36

Теги

Похожие вопросы