Tugger the SLUGger!SLUG Mailing List Archives

Re: [SLUG] Scripting mystery


On Sun, May 10, 2009 at 5:42 PM, Rick Phillips <rickp@xxxxxxxxxxxxxx> wrote:

> James,
>
> > Searching for "works from command line but not via cron" shows that
> you're
> > not alone :)
> > Usually, this stems from the fact that cron doesn't execute your various
> > shell initialisation scripts - ~/.profile, ~/.bashrc, ~/.bash_profile,
> > ~/.login, etc. A common problem is thus that $PATH isn't set (when the
> > script runs under cron) to what you expect (based on what you see when
> > you're running it by hand). However, all sorts of other things could be
> > different: your ~/.bash_profile might set a non-standard umask; or set up
> > some aliases that don't exist when the script runs under cron.
> >
> Nothing non standard about my bash profile but on this system, both root
> and my own bash profiles are identical.


Sorry, my ramblings weren't very clear

The point is that cron doesn't load *anyone's* profile; it doesn't matter
what's in roots, it will never be looked at.

The usual problem is that even the standard profile includes path mappings
that the cronjob doesn't get; but you seem to have allowed for that by
explicitly defining paths.

>
>
> > Changing the shebang line to "#!/bin/sh -x" will cause each line to be
> > echoed; if you then change the cronjob to ">>/var/log/cronlog" or similar
> > you should get some more information about what cron is actually running,
> > and what the rsync commands are doing.
> >
>
> I will add the logging.
>
> > A random guesses, aside from the things I've mentioned above: the shebang
> > line stipulates /bin/sh; I'd bet you're not using /bin/sh as your shell.
> On
> > some systems /bin/sh is bash; on other systems it's something different -
> > maybe sh, maybe dash, maybe bash-in-sh-compatibility-mode.
> >
> I hoping that the shebang line is the problem although that does not
> explain why it runs on the CLI as root and not fully as root in cron.  I
> have changed it to bash but won't know until tomorrow morning if it is
> going to behave.
>
> > Another random guess: if the cronjob runs as a user who doesn't have
> > 192.168.0.20 in their ~/.ssh/known_hosts file, ssh will ask questions
> about
> > whether you really want to connect. It's possible that when you do it by
> > hand you have a pre-populated ~/.ssh/known_hosts, but the cronjob runs as
> a
> > different user and doesn't have that.
> >
> No - that's not the issue.  192.168.0.20 is included in root's known
> hosts.
>
> Thanks for giving me some places to look.
>
> Rick
>
> --
> SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
> Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
>