Скрипт Python в bash с crontab не работает, но без crontab работает

#bash #shell #cron #crontab

#bash #оболочка #cron

Вопрос:

У меня есть скрипт bash, который делает снимок с помощью моей камеры Raspberry pi и измеряет влажность и температуру с помощью скрипта python.

 #!/bin/bash

raspistill -o /var/www/image.jpg -t 1000
python Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 4 | tr -s ' ' | grep -o '[0-9] .[0-9] ' > /var/www/sensor.out
  

Скрипт bash работает, если я выполняю его нормально, но если я помещаю его в crontab (как root), он все равно выполняет первую строку, но вторая строка возвращает пустой файл. Он удаляет, но не заменяет старую информацию.

 pi@rpi ~ $ sudo crontab -e
 GNU nano 2.2.6                              File: /tmp/crontab.Y0eieF/crontab

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi


*/1 *  *   *   *     /home/pi/testcron.sh
  

Я понятия не имею, почему он не работает, может быть, это из-за именованных каналов?

Комментарии:

1. Используйте абсолютный путь к входному файлу во второй строке.

Ответ №1:

У вас есть относительный путь, указанный в вашем скрипте, но вы не запускаетесь в своем домашнем каталоге из cronjob. Используйте абсолютные пути в вашем скрипте bash.

Комментарии:

1. В целом, среда оболочки довольно спартанская внутри cronjob. Вы не получаете среду вашего пользователя. Попробуйте запустить команду «set», перенаправленную в файл как cronjob, чтобы посмотреть, как это выглядит. Это поможет вам настроить ваши скрипты для правильной работы.

2. О, я забыл о пути после попытки заставить cron работать. Спасибо за вашу помощь 🙂