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

crontab не работает, не удается найти исполняемый файл aws

Я пытаюсь запустить сценарий резервного копирования на моем сервере ec2 amazon (ubuntu 14.04), чтобы автоматически создать моментальный снимок томов amazon ebs. Поэтому я использую скрипт aws-missing-tools: https://github.com/colinbjohnson/aws-missing-tools/tree/master/ec2-automate-backup

Это мой сценарий резервного копирования, запускающий ec2-automate-backup-awscli.sh:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/aws
HOME=/
JAVA_HOME=/usr/lib/jvm/default-java/jre/
MAILTO=xxx.xxxxxx@me.com

AWS_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxx
AWS_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/opt/aws/ec2-automate-backup-awscli.sh -r us-east-1 -s tag -t 'Backup,Values=true' -k 31 -p

Но я получаю эту ошибку только при планировании этого скрипта с помощью crontab:

26 23 * * * /opt/aws/backup.sh >> /var/log/aws.log 2>&1

Файл журнала: «Чтобы использовать ec2-automate-backup-awscli.sh, должен быть установлен исполняемый файл« aws »».

Непосредственное выполнение "sh backup.sh" работает нормально. (снимки создаются.)

Любые идеи?

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

/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

Кроме того, вам лучше установить оболочку с помощью «хэшбэга», а не использовать SHELL переменная окружения, так как это позволит crontab автоматически использовать правильный интерпретатор:

#!/bin/bash

У меня была именно такая ошибка. Предполагая, что у вас установлены необходимые компоненты и запуск команды вручную работает, но не в Cron, возможно, правильный путь не отображается команде cron. Вы можете исправить это, запустив crontab -e, а затем введя путь прямо на вкладке cron:

# Export the path so that the scripts run correctly PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

Точка не допускается в имени файла сценария cron, если 14.04 действительно не включила Linux Standards Base, просто A-Za-z0-9- - видеть эта ошибка Launchpad для получения дополнительной информации

Переименовать "backup.sh"к"backupsh".

Лучшее испытание, чем "sh backup.sh" было бы "run-parts --verbose /opt/aws/". Если run-parts не показывает ваше имя файла, cron не запустит его.