|
From: Nikolaus S. <mic...@we...> - 2011-05-18 21:45:11
|
On Tue, May 17, 2011 at 11:08:40PM +0700, Tim Rice wrote:
> On 5/17/2011 10:10 PM, Malahal Naineni wrote:
> > Tim Rice [ti...@ph...] wrote:
> >> I get the following errors when running under crontab. If I run from
> >> the command line I don't get any errors.
> >>
> >> Any idea why Cran is breaking this?
> >>
> >> Traceback (most recent call last):
> >> File "/usr/local/bin/archivemail", line 1604, in<module>
> >> main()
> >> File "/usr/local/bin/archivemail", line 703, in main
> >> archive(mailbox_path)
> >> File "/usr/local/bin/archivemail", line 1149, in archive
> >> _archive_mbox(mailbox_name, final_archive_name)
> >> File "/usr/local/bin/archivemail", line 1220, in _archive_mbox
> >> retain.write(msg)
> >> File "/usr/local/bin/archivemail", line 384, in write
> >> self.mbox_file.write(body)
> >> IOError: [Errno 28] No space left on device
> >
> > Just looked at the code. The archivemail creates a temporary file using
> > tempfile.mkstemp("retain"). "dir" is not specified, so a default
> > directory is used. The default directory is chosen from a
> > platform-dependent list, but the user of the application can control the
> > directory location by setting the TMPDIR, TEMP or TMP environment
> > variables.
That looks like a good guess to me.
> > So it boils down to the difference of environment variables setting of
> > TMPDIR, TEMP or TMP under those two execution environments (cron vs
> > direct).
> >
> > If you are comfortable with python, you can just log 'temp_name' in
> > RetainMbox class just after this "temp_name = tempfile.mkstemp("retain")[1]"
> > and see what it is under those two different execution environments.
Changing code isn't necessary, the verbose command line switch -v also
reveals this.
Nikolaus
|