2

I'm trying to use cron for the first time, and I'm stuck.

I'm using Ubuntu 10.10, and the following is my /etc/crontab file. The only modification that I've made is appending the last line.

I've verified that cron is running, and the other jobs here run, but the last one does not.

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
21 22   * * *   root    /etc/mycron/myscript.sh > /home/me/stuff/log/cron.log

I've checked $ sudo grep CRON /var/log/syslog and found evidence of the hourly jobs, but nothing for the new job.

I've looked for cron.allow and cron.deny files, but they don't seem to exist on my machine.

2

I hate to ask the obvious, but is /etc/mycron/myscript.sh executable? You can check with:

ls -l /etc/mycron/myscript.sh

Should generally see 3 x's. If not, try:

chmod -V +x /etc/mycron/myscript.sh

You can also use sh or bash to run the script, using this line in the cron instead:

sh /etc/mycron/myscript.sh
  • It is executable, thanks for asking. (Really) I'm curious what difference adding sh makes. (I'm trying it, I just don't have any idea what it could mean if it works.) – Eric Wilson Sep 6 '11 at 2:02
  • 1
    OK, adding sh made it work. What was cron trying to do when it wasn't there? I'd really appreciate some insight here, otherwise I'll superstitiously add sh to cron jobs indefinitely. – Eric Wilson Sep 6 '11 at 2:10
  • @EricWilson Cron executes the command through a shell. With a non-executable myscript.sh isn't executable, that shell emits the error message /etc/mycron/myscript.sh: Permission denied and moves on to the next instruction (i.e. exits, since this is the only instruction). The error message is sent through local e-mail to your account, like all output from a cron job. If you haven't installed an MTA, the cron job output is lost. – Gilles Sep 6 '11 at 7:22
  • @Giles But my script was executable. I had executed it from the command line, and confirmed that all three xs were there. – Eric Wilson Sep 6 '11 at 10:07
  • How about the shebang? Does the first line say: #!/bin/sh or #!/bin/bash -- this may be your problem. – laebshade Sep 11 '11 at 21:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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