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