2013-03-21 42 views
2

我正在自動執行ec2啓動和關閉操作,我寫了一個bash腳本,它在我手動運行它時起作用,但是當我將bash添加到由crontab運行時它不執行。我已經爲腳本分配了適當的權限。這裏是我的腳本無法使用cron運行ec2命令行

#! /bin/bash 
/usr/local/aws/bin/ec2-start-instances --region us-east-1 i-abc12345 

這裏是我的crontab

35 13 * * * /bin/bash /home/ubuntu/.script/testshutdown.sh 

請幫我!

+0

您可能會錯過ec2命令行工具在cron使用的會話中需要的一些環境變量。在運行ec2命令之前,您可能需要在腳本中嘗試定義它們。 – datasage 2013-03-21 13:44:59

回答

2

對於任何錯誤,您從/var/log/cron獲得什麼輸出?此外,如果您在腳本開始處放置了#!/ bin/bash,那麼您不需要告訴cron如何執行該腳本。確保它是可執行的(chmod + x testshutdown.sh)。

您是在編輯/ etc/crontab,運行crontab -e還是其他?系統上不止有一個crontab,在某些情況下,它們的編輯方式會有所不同。

1

我在這裏的答案可能是你正在尋找的幫助: https://stackoverflow.com/a/21397517/2083509 段:

AWS_ACCESS_KEY="blah-blah-dingle-smith" # changeme 
AWS_SECRET_KEY="yankee-doodle-shit-no-stank" # changeme 
JAVA_HOME="/usr/lib/jvm/java" 
EC2_HOME="/opt/aws/apitools/ec2" 
EC2_URL="https://us-west-2.ec2.amazonaws.com/" # changeme 
PATH="$PATH:/opt/aws/bin" # is dir contains a symlinks of tool binaries 
export AWS_ACCESS_KEY AWS_SECRET_KEY JAVA_HOME EC2_HOME EC2_URL PATH 

添加上述直接進入您的testshutdown.sh腳本。或者給它自己的腳本並在你的crontab作業之前加載它。例如:* * * * * /home/ubuntu/.script/aws-env.sh; /home/ubuntu/.script/testshutdown.sh或我建議從鏈接(源a * .conf)中提出的建議使用完全訪問管理密鑰進行特定任務是不可取的。 ;)

在cron本身設置你的SHELL可能是明智的。將SHELL=/bin/bash替換或添加到您的cron。即使你有適當的屁股,它仍然是一個很好的決定。試着找出你知道爲什麼命令工作的原因,你可能會開車瘋狂。