Issue
So I have a script to download a file from AWS daily and append it to a spread sheet. To do this I have set up a cronjob.
The Script works fine when I run it manually, but does not work when running from the cronjob.
The code has a line:
aws s3 cp s3://My/files/backup/ ~/home/AnPoc/ --recursive --exclude "*.tgz" --include "*results.tgz"
And in the email I recieve from the cronjob execution, I see the following error message:
./AnPoc/DayProcessing.sh: line 14: aws: command not found
I don't know why the command is not being found. Any help would be great.
Solution
First: check where on your system the executable aws
is stored. Use this command:
$ which aws
/usr/bin/aws # example output, can differ in your system
Now, place a variable called $PATH
in your crontab before the script:
PATH=/usr/bin:/usr/local/bin
Those paths separated by :
define where should be search for the exectable. In the example above it's /usr/bin
. You have to check all executables in your cron job that they are available.
Another thing: try to avoid path with a tilde (~
) in cronjobs. Use /home/user
instead.
Answered By - chaos Answer Checked By - Clifford M. (WPSolving Volunteer)