PDA

Показать полную графическую версию : [решено] Cron не отрабатывает sh скрипт от sudo


beowulf0208
03-03-2021, 19:53
Здравствуйте. Собрал мини ПК на базе Raspberry Pi 4B, установил на него Twister OS и систему умного дома Domoticz. В итоге хотел сделать одну настройки в Domoticz с помощью cron и sh скрипта, но cron почемуто не отрабатывает sh скрипт. Если вручную запускать скрипт, то он работает как надо. Всё делал по инструкции с сайта (https://kvshome.ru/?p=521).
Сам cron работает, вот что выдаёт комманда grep CRON /var/log/syslog:

Mar 3 20:40:01 raspberrypi CRON[16391]: (root) CMD (/etc/scripts/check_domoticz_online.sh > /dev/null 2>&1)
Mar 3 20:45:01 raspberrypi CRON[19221]: (root) CMD (/etc/scripts/check_domoticz_online.sh > /dev/null 2>&1)
Mar 3 20:50:01 raspberrypi CRON[22069]: (root) CMD (/etc/scripts/check_domoticz_online.sh > /dev/null 2>&1)
Mar 3 20:55:01 raspberrypi CRON[25156]: (root) CMD (/etc/scripts/check_domoticz_online.sh > /dev/null 2>&1)
Mar 3 21:00:01 raspberrypi CRON[28001]: (root) CMD (/etc/scripts/check_domoticz_online.sh > /dev/null 2>&1)
Mar 3 21:05:01 raspberrypi CRON[30847]: (root) CMD (/etc/scripts/check_domoticz_online.sh > /dev/null 2>&1)
Mar 3 21:10:01 raspberrypi CRON[1498]: (root) CMD (/etc/scripts/check_domoticz_online.sh > /dev/null 2>&1)

Вручную скрипт запускаю коммандой: sudo bash /etc/scripts/check_domoticz_online.sh
Пробовал сокращать задание cron из */5 * * * * /etc/scripts/check_domoticz_online.sh > /dev/null 2>&1 в */5 * * * * /etc/scripts/check_domoticz_online.sh, но это не помогло. Может кто-нибудь написать как правильно прописать задание в cron чтоб скрипт работал?

shisik
03-03-2021, 20:23
sudo chmod +x /etc/scripts/check_domoticz_online.sh

Jula0071
03-03-2021, 20:35
Скорее всего в кроне PATH неполный. Хотя скрипт только curl'ом урл дёргает. Ну или шелл там используется не bash по умолчанию.
Пробовал сокращать задание »
Для дебага сделайте так

sudo crontab -e -u root
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/5 * * * * /etc/scripts/check_domoticz_online.sh >> /tmp/check_domoticz_online.log 2>&1


В /tmp/check_domoticz_online.log будет выхлоп (если будет, т.е. моё вангование про SHELL и PATH не угадало)

sudo chmod +x »
Вручную-то работает, дело не в отстутствии execute bit

beowulf0208
03-03-2021, 21:16
sudo chmod +x /etc/scripts/check_domoticz_online.sh »
Спасибо. Комманда помогла и всё заработало согласно инструкции с сайта. Я сделал немного по другому и в задание cron прописал:
*/5 * * * * bash /etc/scripts/check_domoticz_online.sh > /dev/null 2>&1
так тоже работало, но Ваш вариант удобнее.

shisik
03-03-2021, 21:31
Вручную-то работает, дело не в отстутствии execute bit »

Вручную работало как

sudo bash скрипт

что как бы намекает на отсутствие execute bit

Я сделал немного по другому и в задание cron прописал:
*/5 * * * * bash /etc/scripts/check_domoticz_online.sh > /dev/null 2>&1 »

Или так

Jula0071
03-03-2021, 21:41
что как бы намекает на отсутствие execute bit »
А этот момент я провафлил, поверил ТС, что Всё делал по инструкции с сайта. »
Там явно сказано

root@rp1> chmod 755 /etc/scripts/check_domoticz_online.sh


PS Не верь рукожопам, ссылающимся на инструкции.




© OSzone.net 2001-2012