22

We have a role account at work that has a pretty big crontab. Its MAILTO is pointed at a shared address, so that a number of us get notified if something fails.

I'd like to add an entry to this crontab, but I only want myself to be notified if something goes wrong. Is there a way to change MAILTO for this one entry, or otherwise accomplish my goal?

mike
  • 3,963
  • 11
  • 30
  • 27
  • Another approach to those suggested so far, is to use the feature that cron emails the user who is running the job, so make another user just for this job, and forward its emails to you. – Hayden Thring Apr 25 '14 at 03:50

3 Answers3

22

You can always just do:

MAILTO=you
* * * ...  your cron job
MAILTO=normal.destination
freiheit
  • 14,544
  • 1
  • 47
  • 69
10

You can always pipe all output to the mail command with the correct address in a subshell. As long as there is nothing on STDOUT or STDERR cron will not send the email

10 * * * * sh -c 'thisonecommand 2>&1 | mail otheraddress@foo.com'

  • 1
    This doesn't work -- the "mail" command sends regardless of whether or not it gets output. So I get an empty message on success, whereas what I want is no message on success. – mike Jul 01 '09 at 17:46
  • 5
    Nice! And to avoid empty emails from mail command, use this parameter: -e (or -E for some..) –  Oct 28 '10 at 20:17
4

I can't recall if cron preparses the file to read in the environment vars, so I'm not sure if you can change MAILTO multiple times in a single file. But you can always split it to another file and put it in /etc/cron.d/foo with a MAILTO=some@email.tld.

sth
  • 250
  • 3
  • 15
Brendan
  • 934
  • 6
  • 5