Ubuntu

crontab 失敗,找不到 aws 執行檔

  • July 20, 2016

我正在嘗試在我的 ec2 亞馬遜伺服器(ubuntu 14.04)上執行備份腳本,以自動創建亞馬遜 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

此外,您最好像這樣通過“hashbang”設置 shell,而不是使用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

引用自:https://serverfault.com/questions/627980