[CentOS] cron job not working

Wed Sep 17 01:18:14 UTC 2008
Robert <kerplop at sbcglobal.net>


Al Sparks wrote:
> Here's a perl script that works when I run it manually.  But when I
> run it via cron, it won't create the directory.  But worse than that,
> an email isn't sent to the account running the job.  So I'm not
> getting an error, but it does work when I run it manually.
>
> If I put an obvious error in the script, cron does generate an
> email giving me the STDERR.
>
> What could it be?
>     === Al
>
> #!/usr/bin/perl
>
> ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
>
> # Above functions, "time" and "localtime", return weird $year and $month
> # Need to be converted to become human readable
>
> $year = $year + 1900;
> $mon = $mon + 1;
>
> # Want $mday and $mon to be 2 digits, with leading zero if necessary
>
> $mday = "0" . $mday if $mday < 10;
> $mon = "0" . $mon if $mon < 10;
>
> # Second parameter is mask in octal
>
> chdir "/ora-local/db-test-backups";
> mkdir "${year}_${mon}_${mday}", \00022;
> ####End perl script
>   
Probably a permissions problem, as has been noted. What I can't 
understand is how the problem came to be so complicated. This, run as a 
root cron job, will produce the desired directory:

#!/bin/bash
mkdir -p /ora-local/db-test-backups/`date +%Y"_"%m"_"%d`

...without the adjustments in the perl script.  AAMOF, it's even simpler 
if you can tolerate hyphen separators rather than underscores. (date +%F)