2014-10-21 19 views
19

Bu yüzden AWS günlük bir dosya indirmek ve bir yayına eklemek için bir komut dosyası var. Bunu yapmak için bir cronjob kurdum.AWS çalışmıyor Cronjob

Komut dosyası, el ile çalıştırdığımda iyi çalışır, ancak cronjob'den çalışırken çalışmaz.

kod hattı vardır:

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

Ve e-postada ben cronjob yürütme tarifesi, aşağıdaki hata iletisi görebilirsiniz:

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

bilmiyorum neden komut bulunamadı. Herhangi bir yardım harika olurdu.

+0

içine yürütülecek önce – Fr0zenFyr

cevap

27

İlk olarak: sisteminizde yürütülebilir dosyanın aws saklandığı yeri denetleyin. Bu komutu kullanın: Şimdi

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

, komut önce crontab $PATH adlı bir değişken yerleştirin: : ayrılmış

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

olanlar yolları exectable aramak olması gereken yerde tanımlar. Yukarıdaki örnekte, /usr/bin. Cron işindeki tüm çalıştırılabilirleri mevcut olduklarını kontrol etmelisiniz.

Başka bir şey: cronjobs içinde bir tilde (~) ile yol önlemek için deneyin. Bunun yerine /home/user kullanın. Komut satırı crontab Bu lanetlemek $ hi7 s3 CLI için cron'u oluşturma hakkında bir bölümde AWS tarafından belgelenmelidir -e

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

El ile çalıştırıldığında neden çalışır? –

+1

$ PATH'I eklediyseniz, oturumunuzun değişken yüklü olduğunu görürsünüz. Ancak, crontab'dan çalıştırdığınız zaman bunu yapmaz. –

+1

Kaydedilmiş my ar $ e ... posta sunucumun yedeklerini s3 kovasına taşımak ve taşımak zorunda kaldı. Scriptimi çalıştırdığımda (aws s3 cp ile) el ile çalıştı, cron ile çalışmak için sadece 'PATH' eklemek gerekiyordu. Emriniz için olmasa yemin ederim ki, bunu bir yıl içinde asla çözemem. – Fr0zenFyr

19

"aws" komutu için tam yolu kullanmalısınız. Örneğin,/usr/local/bin/aws

+0

Bu benim için sorun oldu, teşekkürler. –

+1

Neden böyle? ... –

+1

@ user5735796 - komut dosyası cron ile çalıştırıldığında, aws için $ PATH değişkeninde yapılandırılmış olarak önceden tanımlanmış konumlarda çalıştırılabilir. Bu konumlarda aws yüklenmezse, komut bulunamadı. Bu nedenle, ya tam yolu çalıştırmak için kullanın ya da aws konumunuzu $ PATH değişkenine ekleyin. – plspl

3

bu kodu koyun.
+0

Bu iyi bir seçenek –