Using Cron to run a python program
vagrantbrad at yahoo.com
vagrantbrad at yahoo.com
Thu Nov 24 17:42:28 CET 2005
You were right!! I had a relative path to the update.log file, so I
looked in the home path of the cron environment and found the
update.log file that the cron job was writing to. I updated my program
to point to the absolute path of the update.log file that I wanted the
logs written to, and now it works.
Steve Holden wrote:
> Carsten Haese wrote:
> > On 23 Nov 2005 16:23:11 -0800, vagrantbrad wrote
> >>I'm using python 2.4 running on Fedora Core 4. I have written a python
> >>program called ipscan.py that checks the external ip address of my
> >>cable internet connection, and on change, will update the dns records
> >>at my dns provider, zoneedit. So basically, I've setup dynamic dns
> >>using python. Once the ip compare and/or update is complete, I log the
> >>results to a text file called update.log. When I run the program in
> >>a bash shell with the command "python ipscan.py", the program runs fine
> >>and the results are appended to update.log. When I run this program
> >>as a cron job under the root user with the previously mentioned
> >>command, the program runs without errors but does not append an
> >>entry to the log. The permissions on the update.log file should not
> >>be an issue since I'm running the cron job as root, but I've given
> >>root write permissions just to be safe. What would cause the
> >>logging to work at a command prompt but fail in cron? I'm not
> >>getting any errors in the cron logs or /var/spool/mail/root.
> > You're not giving us much detail about your script, so we can only guess. My
> > guess is that your python script is either not invoked at all or it dies
> > (raises an exception) before appending to the update.log.
> > You should keep in mind that cron jobs don't run in a normal login shell,
> > don't have the normal environment variables, and are not attached to a tty.
> > Any of those factors can conceivably cause a script to fail under cron when it
> > works fine from a shell.
> Since we're guessing, *my* guess would be that the cron-triggered runs
> are running in some directory other than the one the manually-triggered
> jobs are, and that there is a separate update.log file in that directory.
> The fix, of course, would be to use an absolute path to identify the log
> file (if I'm right).
> Steve Holden +44 150 684 7255 +1 800 494 3119
> Holden Web LLC www.holdenweb.com
> PyCon TX 2006 www.python.org/pycon/
More information about the Python-list