Ubuntu
crontab 失敗,找不到 aws 執行檔
我正在嘗試在我的 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