Назад | Перейти на главную страницу

Curl не работает при выполнении cron

У меня есть сценарий 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

это сработало.

Я сообщу об этом всем, у кого могут возникнуть проблемы такого рода в будущем.