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.

1 Answer 1

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
5
  • 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.) Sep 6, 2011 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. Sep 6, 2011 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. Sep 6, 2011 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. Sep 6, 2011 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, 2011 at 21:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .