#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 работать. Спасибо за вашу помощь 🙂