AWS не работает от Cronjob

Итак, у меня есть script, чтобы загрузить файл из AWS ежедневно и добавить его в лист рассылки. Для этого я создал cronjob.

script отлично работает, когда я запускаю его вручную, но не работает при запуске из cronjob.

Код имеет строку:

aws s3 cp s3://My/files/backup/ ~/home/AnPoc/ --recursive --exclude "*.tgz" --include "*results.tgz"

И в электронном письме, полученном из выполнения cronjob, появляется следующее сообщение об ошибке:

./AnPoc/DayProcessing.sh: line 14: aws: command not found

Я не знаю, почему команда не найдена. Любая помощь будет отличной.

Ответы

Ответ 1

Сначала: проверьте, где в вашей системе хранится исполняемый файл aws. Используйте эту команду:

$ which aws
/usr/bin/aws # example output, can differ in your system

Теперь поместите переменную с именем $PATH в ваш crontab до script:

PATH=/usr/bin:/usr/local/bin

Эти пути, разделенные символом :, определяют, где искать поиск. В приведенном выше примере это /usr/bin. Вы должны проверить все исполняемые файлы в своем задании cron, чтобы они были доступны.

Другое: старайтесь избегать пути с тильдой (~) в cronjobs. Вместо этого используйте /home/user.

Ответ 2

Вы должны использовать полный путь для команды "aws". Например,/usr/local/bin/aws

Ответ 3

Поместите этот код до того, как ваша командная строка будет запущена в crontab -e

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin