crontab falha, não é possível encontrar aws executável [duplicado]

2

Estou tentando executar um script de backup no meu servidor ec2 amazon (ubuntu 14.04), para criar automaticamente um instantâneo dos volumes amazon ebs. Portanto, estou usando o script aws-missing-tools: link

Este meu script de backup, que aciona 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/
[email protected]

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

Mas eu só recebo esse erro ao agendar esse script com o crontab:

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

Arquivo de log: "Para usar o ec2-automate-backup-awscli.sh, o executável" aws "deve estar instalado."

A execução direta de "sh backup.sh" funciona bem. (instantâneos são criados.)

Alguma idéia?

    
por Ben Marten 12.09.2014 / 01:31

3 respostas

4

Sua variável PATH deve ser uma lista de diretórios , portanto, considerando que seu executável aws está em /usr/local/bin/aws , seu PATH deve ser este:

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

Além disso, é melhor configurar o shell por meio de um "hashbang", em vez de usar a variável de ambiente SHELL , pois isso permitirá que o crontab use automaticamente o interpretador correto:

#!/bin/bash
    
por 12.09.2014 / 01:43
0

Eu tive esse erro exato. Supondo que você tenha os pré-requisitos instalados e que o comando funcione manualmente, mas não no Cron, pode ser que o caminho correto não seja exposto ao comando cron. Você pode corrigir isso executando crontab -e e inserindo o caminho diretamente na guia 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

    
por 20.07.2016 / 07:42
-1

O caractere de ponto não é permitido no nome do arquivo de um script cron, a menos que o 14.04 realmente tenha ativado o Linux Standards Base, apenas A-Za-z0-9- - veja este Bug do Launchpad para mais informações

Renomeie " backup.sh " para " backupsh ".

Um teste melhor que " sh backup.sh " seria " run-parts --verbose /opt/aws/ ". Se run-parts não mostrar seu nome de arquivo, o cron não o executará.

    
por 12.09.2014 / 01:49