I have this shell script at /usr/local/1.sh:

#!/bin/sh
wget -r -np --user=peter --password='123' ftp://67.225.87.95/ -p /test/

If I run it using

# sh 1.sh 

the script executes ok and does what its supposed to do.

But if I create a cron job to execute the exact same script:

1 2 * * * /usr/local/bin/1.sh

the script is not executed at all.

What could be wrong?

link|improve this question

29% accept rate
How the hell did you manage to add multiple lines in your title? – SamKrieg Jul 25 '11 at 9:56
What do you mean by "shell script not done"? Is there any error message? – vstm Jul 25 '11 at 10:07
SamKrieg: "wget shell script" is the title. He has just made three lines of which are headline highlighted. – rzetterberg Jul 25 '11 at 10:08
Check if wget is in the PATH of the user, whose crontab you are using. – HUB Jul 25 '11 at 10:11
feedback

3 Answers

  • Always use the full path when doing something in cron job
  • Redirect all the output, error to a log file to see what happen: 1 2 * * * /usr/local/bin/1.sh > /var/log/1.log 2>&1
link|improve this answer
feedback

If you are going run it directly without invoking the shell interprer, you need to provide the appropriate permissions:

chmod +x /usr/local/bin/1.sh

Otherwise, run the interpreter against its:

1 2 * * * /bin/sh /usr/local/bin/1.sh
link|improve this answer
feedback

Replace:

1 2 * * * /usr/local/bin/1.sh

By:

1 2 * * * /bin/bash /usr/local/bin/1.sh

or

Keep it:

1 2 * * * /usr/local/bin/1.sh

And prepend the following to /usr/local/bin/1.sh:

#!/bin/bash

(you may need to replace /bin/bash by whatever which bash is telling you)

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.