У меня есть сценарий bash, подобный следующему
#!/bin/bash
date
curl http://lab.nextt.com.br/somefile1.html -z ../public_html/somefile1.html -o ../public_html/somefile1.html --silent --show-error --location
curl http://lab.nextt.com.br/somefile2.html -z ../public_html/somefile2.html -o ../public_html/somefile2.html --silent --show-error --location
curl http://lab.nextt.com.br/somefile3.html -z ../public_html/somefile3.html -o ../public_html/somefile3.html --silent --show-error --location
curl http://lab.nextt.com.br/somefile4.html -z ../public_html/somefile4.html -o ../public_html/somefile4.html --silent --show-error --location
и у меня есть такая cronttab
* * * * * /home/user/cronjobs/cronjob-updatefiles >> /home/user/cronjobs/log
Мое намерение: всякий раз, когда есть обновление в общедоступном файле, загружать его на мой сервер.
Так хорошо до сих пор.
Когда я запускаю сценарий вручную на полке, файлы загружаются и обновляются должным образом.
И cron запускает ... / home / user / cronjobs / log обновляется с указанием даты (в начале скрипта). Но команды curl не выполняются через cron. Файлы не обновляются.
Почему, когда я запускаю непосредственно в оболочке, он работает, а когда я запускаю через cron, - нет?
Я решил проблему, мог ли я запустить скрипт вручную, но когда я попытался использовать cron, он не смог выполнить команду «curl: not found».
везде, где вы написали "curl" в своем скрипте, укажите полный путь.
Как найти полный путь.? Просто запустите на своем компьютере команду "which curl", вы увидите путь для curl и скопируйте вставку в свой скрипт.
Когда вы запускаете сценарий из командной строки, используются ваши собственные переменные среды, включая $ PATH. Однако, когда вы запускаете скрипт из cron, $ PATH отличается. Я предполагаю, что у вас нет curl на пути, который cron имеет в своей переменной среды $ PATH.
Решение: в вашем скрипте используйте полный путь к cron.
Я решил проблему.
Cron потерял ссылку на каталог файлов.
Когда я изменился
curl http://lab.nextt.com.br/somefile1.html -z ../public_html/somefile1.html -o ../public_html/somefile1.html --silent --show-error --location
к
curl http://lab.nextt.com.br/somefile1.html -z /home/user/public_html/somefile1.html -o /home/user/public_html/somefile1.html --silent --show-error --location
это сработало.
Я сообщу об этом всем, у кого могут возникнуть проблемы такого рода в будущем.