jdesilvio
jdesilvio

Reputation: 1854

Bash cron job doesn't execute like it does on command line

I've written a bash script that executes a python script to write a file to a directory, then sends that file to Amazon S3. When I execute the script from the command line it executes perfectly, but when I run it with cron, the file writes to the directory, but never gets sent to S3. I must be doing something wrong with cron.

Here is the bash script:

#!/bin/bash

#python script that exports file to home directory
python some_script.py

#export file created by python to S3
s3cmd put /home/bitnami/myfile.csv s3://location/to/put/file/myfile.csv

Like I said before, manually executing works fine using ./bash_script.sh. When I set up the cron job, the file writes to the directory, but never gets sent to S3.

my cron job is:

18 * * * * /home/bitnami/bash_script.sh

Am I using cron incorrectly? Please help.

Upvotes: 0

Views: 216

Answers (1)

Norbert
Norbert

Reputation: 6084

Cron looks OK, however your path to the .py file will not be found.

You will have to add a path or home like:

location=/home/bitnami/
python $location/some_script.py

Also s3cmd needs to be located correctly:

/bin/s3cmd

Alternative might also need to load your user environment first before executing the script to find username/password/ssh key for s3cmd

Upvotes: 1

Related Questions