How to get cron job to mail output only if non-empty

David Karr davidmichaelkarr at
Thu Mar 5 01:32:59 UTC 2009

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

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. It would be straightforward to extend this into a shell
script that writes the output to a temp file, then only pipes it into "mail"
if the output is non-empty, and then deletes the temp file.  Is there an
"easier" (that can mean many things) way to do this?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the ubuntu-users mailing list