1

У меня есть скрипт, который запускается по ночам, который возвращает результаты, отличные от того, когда я запускаю его вручную. Я понимаю, что это распространенный вопрос, и моя проблема, скорее всего, заключается в переменной окружения, которая не обнаруживается при запуске cron.

Я добавил мой PATH вручную в начало crontab, и я добавил строку

. ~/.bash_profile

к началу сценария. Что еще могло случиться?

1 ответ1

2

По крайней мере, вы пытались.

Я согласен с тем, что, скорее всего, это проблема среды, и лучший способ узнать, с какой средой вы действительно работаете, - это записать эти среды в файлы, а затем преобразовать их, так что ... добавьте

set > /tmp/myEnvrionrment.$$

сразу после вашего

. ~/.bash_profile

редактировать

(Переменная .$$ добавляемая к имени файла /tmp, является переменной Shell для "идентификатора текущего процесса" и, следовательно, является относительно уникальным числом, которое должно отличаться при каждом запуске сценария.J),

Запустите скрипт из строки cmd, затем из cron

затем

diff /tmp/myEnvrionemnt.*

Предполагая, что там только два файла, в противном случае посмотрите на временные метки этих файлов и удалите другие, чтобы у вас было только 2 файла, один из которых представляет запуск строки cmd, а другой - из запуска crontab.

как set показывает локальные переменные (которые должны включать в себя экспортируемые переменные), это должно работать. Если вы получаете одинаковые списки в обоих заданных выходных файлах, попробуйте

export > /tmp/myExportedVars.$$

как указано выше, и попробуйте их различить.

Посмотрите не только на PATH, но и на переменные LD_ * и LANG.

IHTH

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .