bash script запускается вручную, однако не запускается если установить его как cron задачу
У меня есть bash скрипт, который делает запрос на Postgresql и результат после обработки сохраняет(перезаписывая) в файл.
Упрощенно:
#!/bin/bash
TEXTDATA="\copy (SELECT json_agg(t) FROM (SELECT itemData FROM items ) as t) to /path/to/my/file.json"
#Мой запрос использующий TEXTDATA
sed -i 's/}, \\n {/}, {/g' /path/to/my/file.json
Если я вручную вызываю скрипт в терминале:
./myScript.sh
То он корректно отрабатывает и сохраняет результат в файл.
Однако если я записываю в crontab(запуская командой sudo crontab -e) запись такого вида:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
30 * * * * /bin/bash /home/myName/myScript.sh
То скрипт не запускается каждые 30 минут. Пробовал как вместе с SHELL/PATH и /bin/bash, так и без - не работает.
Скажите пожалуйста, что я делаю не так и как можно исправить это?
Ответы (1 шт):
Автор решения: Mark
→ Ссылка
В итоге чтобы заработал скрипт мне понадобилось:
- Выполнить
crontab -eбезsudo - Убрать
PATH=/sbin:/bin:/usr/sbin:/usr/binи/bin/bash, но оставитьSHELL=/bin/bash- без него не работает. - Выставить права bash файлу командой
sudo chmod 777 /path/to/myScript.sh
SHELL=/bin/bash
30 * * * * /home/myName/myScript.sh
Всем спасибо за помощь.