How to get cron job to mail output only if non-empty
David Karr
davidmichaelkarr at gmail.com
Fri Mar 6 15:05:44 UTC 2009
On Wed, Mar 4, 2009 at 5:46 PM, Matthew Flaschen <
matthew.flaschen at gatech.edu> wrote:
> David Karr wrote:
> > I have a (root) cron job definition like the following:
> >
> > 0 0 * * * /usr/bin/clamscan --no-summary -r --reload
> > --log=/var/log/clamav/clamscan.log -i / | mail -s "Virus scan found
> > something" davidmichaelkarr at gmail.com
> >
> > This works fine when it finds something (I tested it with a fake virus
> > file), but what I didn't expect is that "mail" sends the mail even if the
> > output is empty.
>
> You're trying to reinvent the wheel. Read man cron:
>
> "When executing commands, any output is mailed to the owner of the
> crontab (or to the user named in the MAILTO environment variable in the
> crontab, if such exists)."
>
> Drop the mail -s "Virus scan found something" davidmichaelkarr at gmail.com
> and use MAILTO instead. cron will only send emails there when there is
> actual output.
>
> See also http://usertools.plus.net/tutorials/id/1
>
>
Thanks, that worked fine.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/ubuntu-users/attachments/20090306/878cc84b/attachment.html>
More information about the ubuntu-users
mailing list