Help running shell script from cron

Kevin Kinsey kdk at daleco.biz
Fri Sep 9 07:05:29 PDT 2005


Sandy Knight wrote:

> I am having trouble configuring my shell scripts to run under
> cron (user level, not root). I have set up a test.sh script which
> sends me an email, it works fine from the command line (ssh). the 
> script is as follows:
>
> #!/bin/sh
> echo "helloworld" | mail -s "helloworld" user at domain.com
> php /home/a_user/cron/test.php
>
>
> As you can see I am also trying to get a php script to run (this is my 
> ultimate aim).
>
> My crontab is as follows:
>
> # /home/a_user
> #
> SHELL=/bin/sh
> PATH=/home/a_user/cron
> HOME=/home/a_user
> #
> #
> #minute hour    mday    month   wday    command
> #
> #
> */5 * * * *   /home/a_user/cron/test.sh
>
>
> I have done the following:
>
> $ pwd
>
> /home/a_user
>
> $ crontab cron/myCronTab
>
> $ crontab -l
>
> {output - see above}
>
>
> Crontab is trying to run my script as I receive an email every 5 
> minutes saying:
>
> /home/a_user/cron/test.sh: not found
>
>
> The permissions for the scripts are:
>
> $ ls -lt cron/
>
> -rw-r--r--  1 a_user  vusers   322 Sep  9 12:27 myCronTab
> -rwxr-xr-x  1 a_user  vusers   107 Sep  9 12:16 test.sh
> -rwxr-xr-x  1 a_user  vusers    99 Sep  4 17:58 test.php
>
> Thank you in advance,
>
> Sandy



For starters, assume cron to be totally ignorant about
paths.  That means it doesn't know "whereis" anything,
etc.  Hard-code things, IOW.

That said, and I may be a bit confused, but why try
to supersede whatever limited environment cron
may already have by setting more env vars?

Specifically in this case, try using a crontab with
no env vars set (specifically) and hard code all the paths.
Simply run "crontab -e" and put /usr/local/bin/php -q /path/to/my/script.php
there and see what happens.

HTH,

Kevin Kinsey


More information about the freebsd-questions mailing list