shell script fails when executed by cronjob, works fine otherwise

shell script fails when executed by cronjob, works fine otherwise

I have an executable jar and I have written a shell script to execute it. When I run the shell script manually, it runs fine but when schedule to run it weekly using crontab, it gives the following error –

log_process.sh: line 16: java: command not found

Line 16 in my shell script is –

java -jar $jar_path $logDirectory $logNamePattern $processedLogDirectory $oldResultsDirectory 2>>$log_file 1>&2

Any idea why is it happening that it runs fine when I run it manually but not when it gets run by vrontab job?

Your cron job doesn’t have access to the same $PATH variable that you as a user have.

The easiest way to fix this is to open up a terminal, and run this command:

which java

That’s going to give you the absolute path of your java executable. For example:

/opt/Oracle/Java/bin/java

Replace your ‘java’ command with the whole path.

You might also want to specify the JAVA_HOME variable in your shell script.
From your terminal run:

echo $JAVA_HOME

That’ll give you another path, like ‘/opt/Oracle/Java’. In your script (assuming you are using bash), before you run the java command, put:

export JAVA_HOME=/opt/Oracle/Java

Replacing ‘/opt/Oracle/Java’ with the output that the previous echo gave you.

.
.
.
.