Cron: Only get errors in emails?cron email if only it failsCron: only send mail if output contains stringGet cron to send html-formatted emailsCron runs my script but script doesn't do anything, something to do with mail error??? “got status 0x004b#012”Command does not execute in crontab while command itself works just fineShell script only executes partially when run with CRONCan't run AWS CLI from CRON (credentials)$0 empty in script when run by cronjobCron is retrying a job every 15 minutesbash script works correctly but skips commands in cron if I am not logged in via ssh or I was connected recentlyHow to cope with only one SMTP socket open simultaneously on VPS?Why does backup script fail with cron?

Light Switch Neutrals: Bundle all together?

Can the president of the United States be guilty of insider trading?

While drilling into kitchen wall, hit a wire - any advice?

How to append code verbatim to .bashrc?

Is there a need for better software for writers?

Creating Stored Procedure in local db that references tables in linked server

Why doesn't increasing the temperature of something like wood or paper set them on fire?

What is the oldest instrument ever?

How is Arya still alive?

What are these pads?

How can I test a shell script in a "safe environment" to avoid harm to my computer?

What are my options legally if NYC company is not paying salary?

Is this strange Morse signal type common?

Why does this pattern in powers happen?

How long can fsck take on a 30 TB volume?

Are wands in any sort of book going to be too much like Harry Potter?

How to start your Starctaft II games vs AI immediatly?

Is it a good idea to copy a trader when investing?

Identity of a supposed anonymous referee revealed through "Description" of the report

Why is there a cap on 401k contributions?

Magical Modulo Squares

Why doesn't a particle exert force on itself?

How could a civilization detect tachyons?

Linear Independence for Vectors of Cosine Values



Cron: Only get errors in emails?


cron email if only it failsCron: only send mail if output contains stringGet cron to send html-formatted emailsCron runs my script but script doesn't do anything, something to do with mail error??? “got status 0x004b#012”Command does not execute in crontab while command itself works just fineShell script only executes partially when run with CRONCan't run AWS CLI from CRON (credentials)$0 empty in script when run by cronjobCron is retrying a job every 15 minutesbash script works correctly but skips commands in cron if I am not logged in via ssh or I was connected recentlyHow to cope with only one SMTP socket open simultaneously on VPS?Why does backup script fail with cron?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








37















I finally set up a realistic backup schedule on my data through a shell script, which are handled by cron on tight intervals. Unfortunately, I keep getting empty emails each time the CRON has been executed and not only when things go wrong.



Is it possible to only make CRON send emails when something goes wrong, ie. my TAR doesn't execute as intended?



Here's how my crontab is setup for the moment;



0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com


Thanks a lot!










share|improve this question




























    37















    I finally set up a realistic backup schedule on my data through a shell script, which are handled by cron on tight intervals. Unfortunately, I keep getting empty emails each time the CRON has been executed and not only when things go wrong.



    Is it possible to only make CRON send emails when something goes wrong, ie. my TAR doesn't execute as intended?



    Here's how my crontab is setup for the moment;



    0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com


    Thanks a lot!










    share|improve this question
























      37












      37








      37


      9






      I finally set up a realistic backup schedule on my data through a shell script, which are handled by cron on tight intervals. Unfortunately, I keep getting empty emails each time the CRON has been executed and not only when things go wrong.



      Is it possible to only make CRON send emails when something goes wrong, ie. my TAR doesn't execute as intended?



      Here's how my crontab is setup for the moment;



      0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com


      Thanks a lot!










      share|improve this question














      I finally set up a realistic backup schedule on my data through a shell script, which are handled by cron on tight intervals. Unfortunately, I keep getting empty emails each time the CRON has been executed and not only when things go wrong.



      Is it possible to only make CRON send emails when something goes wrong, ie. my TAR doesn't execute as intended?



      Here's how my crontab is setup for the moment;



      0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com


      Thanks a lot!







      bash shell cron schedule






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 24 '11 at 9:40









      IndustrialIndustrial

      68441937




      68441937




















          5 Answers
          5






          active

          oldest

          votes


















          51














          Ideally you'd want your backup script to output nothing if everything goes as expected and only produce output when something goes wrong. Then use the MAILTO environment variable to send any output generated by your script to your email address.



          MAILTO=email@example.com
          0 */2 * * * /bin/backup.sh


          If your script normally produces output but you don't care about it in cron, just sent it to /dev/null and it'll email you only when something is written to stderr.



          MAILTO=email@example.com
          0 */2 * * * /bin/backup.sh > /dev/null





          share|improve this answer


















          • 7





            This is hardly ideal. You generally want the entire output (stdout + stderr) e-mailed to you when the command ends with a non-zero error code. Otherwise, it is generally fine to gobble at least stdout. To me, this is a design flaw of cron.

            – Witiko
            Jan 18 '17 at 0:12







          • 3





            @Witiko I agree; I found this question trying to fix that. I guess you can make your cron command /bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)?

            – Daniel H
            Oct 17 '17 at 14:08



















          21














          Using cronic wrapper script looks like a good idea; to use it you don't have to change your scripts.



          Instead of:



           0 1 * * * backup >/dev/null 2>&1


          do:



           0 1 * * * cronic backup





          More info on http://habilis.net/cronic/.






          share|improve this answer

























          • I really don't see how that will help when the problem is nothing more than an incorrect cron line and cron is doing exactly what it is told to do.

            – John Gardeniers
            Feb 14 '12 at 0:17






          • 3





            @JohnGardeniers it helps because sometimes you have output without an error.

            – Mikhail
            Aug 31 '14 at 19:59






          • 10





            Alternatively, chronic from the moreutils package: joeyh.name/code/moreutils

            – Vladimir Panteleev
            May 29 '15 at 22:05


















          4














          You are specifically instructing cron to always send email, even when /bin/backup.sh (by the way, it should be in /usr/local/bin) succeeds. Just omit the | mail -s "Backup status" email@example.com part and email will only be sent when there is output. You can probably (depending on your cron) explicitly set the email address to mail to as an assignment in the crontab file.



          For details, see



          man 5 crontab





          share|improve this answer
































            3














            You should be directing the stderr anmd not both stdout and stderr.



            Use 1> /dev/null not 2>&1 and it should be fine. Also, you may need to report the error correctly in your backup script.






            share|improve this answer






























              3














              Here is another variation that I've successfully utilized for many years - capture output and print it out only on error, triggering an email. This requires no temp files, and preserves all output. The important part is the 2>&1 that redirects STDERR to STDOUT.



              Send the entire output via default cron mailer config:



              1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"


              Same but with a specific address and subject:



              (address can also be changed by setting MAILTO=xxxx for the entire crontab file)



              1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address


              You can even perform multiple actions on error and add to email:



              1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" ; ls -ltr /backup/dir ; 


              This will work for simple commands. If you are dealing with complex pipes (find / -type f | grep -v bla | tar something-or-other), then you're better off moving the command into a script and running the script using the aforementioned approach. The reason is that if any part of the pipe outputs to STDERR, you'll still get emails.






              share|improve this answer

























                Your Answer








                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "2"
                ;
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function()
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled)
                StackExchange.using("snippets", function()
                createEditor();
                );

                else
                createEditor();

                );

                function createEditor()
                StackExchange.prepareEditor(
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: true,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: 10,
                bindNavPrevention: true,
                postfix: "",
                imageUploader:
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                ,
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                draft saved

                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f226074%2fcron-only-get-errors-in-emails%23new-answer', 'question_page');

                );

                Post as a guest















                Required, but never shown

























                5 Answers
                5






                active

                oldest

                votes








                5 Answers
                5






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                51














                Ideally you'd want your backup script to output nothing if everything goes as expected and only produce output when something goes wrong. Then use the MAILTO environment variable to send any output generated by your script to your email address.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh


                If your script normally produces output but you don't care about it in cron, just sent it to /dev/null and it'll email you only when something is written to stderr.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh > /dev/null





                share|improve this answer


















                • 7





                  This is hardly ideal. You generally want the entire output (stdout + stderr) e-mailed to you when the command ends with a non-zero error code. Otherwise, it is generally fine to gobble at least stdout. To me, this is a design flaw of cron.

                  – Witiko
                  Jan 18 '17 at 0:12







                • 3





                  @Witiko I agree; I found this question trying to fix that. I guess you can make your cron command /bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)?

                  – Daniel H
                  Oct 17 '17 at 14:08
















                51














                Ideally you'd want your backup script to output nothing if everything goes as expected and only produce output when something goes wrong. Then use the MAILTO environment variable to send any output generated by your script to your email address.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh


                If your script normally produces output but you don't care about it in cron, just sent it to /dev/null and it'll email you only when something is written to stderr.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh > /dev/null





                share|improve this answer


















                • 7





                  This is hardly ideal. You generally want the entire output (stdout + stderr) e-mailed to you when the command ends with a non-zero error code. Otherwise, it is generally fine to gobble at least stdout. To me, this is a design flaw of cron.

                  – Witiko
                  Jan 18 '17 at 0:12







                • 3





                  @Witiko I agree; I found this question trying to fix that. I guess you can make your cron command /bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)?

                  – Daniel H
                  Oct 17 '17 at 14:08














                51












                51








                51







                Ideally you'd want your backup script to output nothing if everything goes as expected and only produce output when something goes wrong. Then use the MAILTO environment variable to send any output generated by your script to your email address.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh


                If your script normally produces output but you don't care about it in cron, just sent it to /dev/null and it'll email you only when something is written to stderr.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh > /dev/null





                share|improve this answer













                Ideally you'd want your backup script to output nothing if everything goes as expected and only produce output when something goes wrong. Then use the MAILTO environment variable to send any output generated by your script to your email address.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh


                If your script normally produces output but you don't care about it in cron, just sent it to /dev/null and it'll email you only when something is written to stderr.



                MAILTO=email@example.com
                0 */2 * * * /bin/backup.sh > /dev/null






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Jan 24 '11 at 9:53









                CakemoxCakemox

                17.9k53765




                17.9k53765







                • 7





                  This is hardly ideal. You generally want the entire output (stdout + stderr) e-mailed to you when the command ends with a non-zero error code. Otherwise, it is generally fine to gobble at least stdout. To me, this is a design flaw of cron.

                  – Witiko
                  Jan 18 '17 at 0:12







                • 3





                  @Witiko I agree; I found this question trying to fix that. I guess you can make your cron command /bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)?

                  – Daniel H
                  Oct 17 '17 at 14:08













                • 7





                  This is hardly ideal. You generally want the entire output (stdout + stderr) e-mailed to you when the command ends with a non-zero error code. Otherwise, it is generally fine to gobble at least stdout. To me, this is a design flaw of cron.

                  – Witiko
                  Jan 18 '17 at 0:12







                • 3





                  @Witiko I agree; I found this question trying to fix that. I guess you can make your cron command /bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)?

                  – Daniel H
                  Oct 17 '17 at 14:08








                7




                7





                This is hardly ideal. You generally want the entire output (stdout + stderr) e-mailed to you when the command ends with a non-zero error code. Otherwise, it is generally fine to gobble at least stdout. To me, this is a design flaw of cron.

                – Witiko
                Jan 18 '17 at 0:12






                This is hardly ideal. You generally want the entire output (stdout + stderr) e-mailed to you when the command ends with a non-zero error code. Otherwise, it is generally fine to gobble at least stdout. To me, this is a design flaw of cron.

                – Witiko
                Jan 18 '17 at 0:12





                3




                3





                @Witiko I agree; I found this question trying to fix that. I guess you can make your cron command /bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)?

                – Daniel H
                Oct 17 '17 at 14:08






                @Witiko I agree; I found this question trying to fix that. I guess you can make your cron command /bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)?

                – Daniel H
                Oct 17 '17 at 14:08














                21














                Using cronic wrapper script looks like a good idea; to use it you don't have to change your scripts.



                Instead of:



                 0 1 * * * backup >/dev/null 2>&1


                do:



                 0 1 * * * cronic backup





                More info on http://habilis.net/cronic/.






                share|improve this answer

























                • I really don't see how that will help when the problem is nothing more than an incorrect cron line and cron is doing exactly what it is told to do.

                  – John Gardeniers
                  Feb 14 '12 at 0:17






                • 3





                  @JohnGardeniers it helps because sometimes you have output without an error.

                  – Mikhail
                  Aug 31 '14 at 19:59






                • 10





                  Alternatively, chronic from the moreutils package: joeyh.name/code/moreutils

                  – Vladimir Panteleev
                  May 29 '15 at 22:05















                21














                Using cronic wrapper script looks like a good idea; to use it you don't have to change your scripts.



                Instead of:



                 0 1 * * * backup >/dev/null 2>&1


                do:



                 0 1 * * * cronic backup





                More info on http://habilis.net/cronic/.






                share|improve this answer

























                • I really don't see how that will help when the problem is nothing more than an incorrect cron line and cron is doing exactly what it is told to do.

                  – John Gardeniers
                  Feb 14 '12 at 0:17






                • 3





                  @JohnGardeniers it helps because sometimes you have output without an error.

                  – Mikhail
                  Aug 31 '14 at 19:59






                • 10





                  Alternatively, chronic from the moreutils package: joeyh.name/code/moreutils

                  – Vladimir Panteleev
                  May 29 '15 at 22:05













                21












                21








                21







                Using cronic wrapper script looks like a good idea; to use it you don't have to change your scripts.



                Instead of:



                 0 1 * * * backup >/dev/null 2>&1


                do:



                 0 1 * * * cronic backup





                More info on http://habilis.net/cronic/.






                share|improve this answer















                Using cronic wrapper script looks like a good idea; to use it you don't have to change your scripts.



                Instead of:



                 0 1 * * * backup >/dev/null 2>&1


                do:



                 0 1 * * * cronic backup





                More info on http://habilis.net/cronic/.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Sep 8 '16 at 11:39









                Law29

                3,1511926




                3,1511926










                answered Feb 13 '12 at 21:43









                Ricardo PardiniRicardo Pardini

                59649




                59649












                • I really don't see how that will help when the problem is nothing more than an incorrect cron line and cron is doing exactly what it is told to do.

                  – John Gardeniers
                  Feb 14 '12 at 0:17






                • 3





                  @JohnGardeniers it helps because sometimes you have output without an error.

                  – Mikhail
                  Aug 31 '14 at 19:59






                • 10





                  Alternatively, chronic from the moreutils package: joeyh.name/code/moreutils

                  – Vladimir Panteleev
                  May 29 '15 at 22:05

















                • I really don't see how that will help when the problem is nothing more than an incorrect cron line and cron is doing exactly what it is told to do.

                  – John Gardeniers
                  Feb 14 '12 at 0:17






                • 3





                  @JohnGardeniers it helps because sometimes you have output without an error.

                  – Mikhail
                  Aug 31 '14 at 19:59






                • 10





                  Alternatively, chronic from the moreutils package: joeyh.name/code/moreutils

                  – Vladimir Panteleev
                  May 29 '15 at 22:05
















                I really don't see how that will help when the problem is nothing more than an incorrect cron line and cron is doing exactly what it is told to do.

                – John Gardeniers
                Feb 14 '12 at 0:17





                I really don't see how that will help when the problem is nothing more than an incorrect cron line and cron is doing exactly what it is told to do.

                – John Gardeniers
                Feb 14 '12 at 0:17




                3




                3





                @JohnGardeniers it helps because sometimes you have output without an error.

                – Mikhail
                Aug 31 '14 at 19:59





                @JohnGardeniers it helps because sometimes you have output without an error.

                – Mikhail
                Aug 31 '14 at 19:59




                10




                10





                Alternatively, chronic from the moreutils package: joeyh.name/code/moreutils

                – Vladimir Panteleev
                May 29 '15 at 22:05





                Alternatively, chronic from the moreutils package: joeyh.name/code/moreutils

                – Vladimir Panteleev
                May 29 '15 at 22:05











                4














                You are specifically instructing cron to always send email, even when /bin/backup.sh (by the way, it should be in /usr/local/bin) succeeds. Just omit the | mail -s "Backup status" email@example.com part and email will only be sent when there is output. You can probably (depending on your cron) explicitly set the email address to mail to as an assignment in the crontab file.



                For details, see



                man 5 crontab





                share|improve this answer





























                  4














                  You are specifically instructing cron to always send email, even when /bin/backup.sh (by the way, it should be in /usr/local/bin) succeeds. Just omit the | mail -s "Backup status" email@example.com part and email will only be sent when there is output. You can probably (depending on your cron) explicitly set the email address to mail to as an assignment in the crontab file.



                  For details, see



                  man 5 crontab





                  share|improve this answer



























                    4












                    4








                    4







                    You are specifically instructing cron to always send email, even when /bin/backup.sh (by the way, it should be in /usr/local/bin) succeeds. Just omit the | mail -s "Backup status" email@example.com part and email will only be sent when there is output. You can probably (depending on your cron) explicitly set the email address to mail to as an assignment in the crontab file.



                    For details, see



                    man 5 crontab





                    share|improve this answer















                    You are specifically instructing cron to always send email, even when /bin/backup.sh (by the way, it should be in /usr/local/bin) succeeds. Just omit the | mail -s "Backup status" email@example.com part and email will only be sent when there is output. You can probably (depending on your cron) explicitly set the email address to mail to as an assignment in the crontab file.



                    For details, see



                    man 5 crontab






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Feb 9 '18 at 7:16

























                    answered Jan 24 '11 at 9:49









                    reinierpostreinierpost

                    39329




                    39329





















                        3














                        You should be directing the stderr anmd not both stdout and stderr.



                        Use 1> /dev/null not 2>&1 and it should be fine. Also, you may need to report the error correctly in your backup script.






                        share|improve this answer



























                          3














                          You should be directing the stderr anmd not both stdout and stderr.



                          Use 1> /dev/null not 2>&1 and it should be fine. Also, you may need to report the error correctly in your backup script.






                          share|improve this answer

























                            3












                            3








                            3







                            You should be directing the stderr anmd not both stdout and stderr.



                            Use 1> /dev/null not 2>&1 and it should be fine. Also, you may need to report the error correctly in your backup script.






                            share|improve this answer













                            You should be directing the stderr anmd not both stdout and stderr.



                            Use 1> /dev/null not 2>&1 and it should be fine. Also, you may need to report the error correctly in your backup script.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Jan 24 '11 at 9:51









                            KhaledKhaled

                            31.5k65487




                            31.5k65487





















                                3














                                Here is another variation that I've successfully utilized for many years - capture output and print it out only on error, triggering an email. This requires no temp files, and preserves all output. The important part is the 2>&1 that redirects STDERR to STDOUT.



                                Send the entire output via default cron mailer config:



                                1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"


                                Same but with a specific address and subject:



                                (address can also be changed by setting MAILTO=xxxx for the entire crontab file)



                                1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address


                                You can even perform multiple actions on error and add to email:



                                1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" ; ls -ltr /backup/dir ; 


                                This will work for simple commands. If you are dealing with complex pipes (find / -type f | grep -v bla | tar something-or-other), then you're better off moving the command into a script and running the script using the aforementioned approach. The reason is that if any part of the pipe outputs to STDERR, you'll still get emails.






                                share|improve this answer





























                                  3














                                  Here is another variation that I've successfully utilized for many years - capture output and print it out only on error, triggering an email. This requires no temp files, and preserves all output. The important part is the 2>&1 that redirects STDERR to STDOUT.



                                  Send the entire output via default cron mailer config:



                                  1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"


                                  Same but with a specific address and subject:



                                  (address can also be changed by setting MAILTO=xxxx for the entire crontab file)



                                  1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address


                                  You can even perform multiple actions on error and add to email:



                                  1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" ; ls -ltr /backup/dir ; 


                                  This will work for simple commands. If you are dealing with complex pipes (find / -type f | grep -v bla | tar something-or-other), then you're better off moving the command into a script and running the script using the aforementioned approach. The reason is that if any part of the pipe outputs to STDERR, you'll still get emails.






                                  share|improve this answer



























                                    3












                                    3








                                    3







                                    Here is another variation that I've successfully utilized for many years - capture output and print it out only on error, triggering an email. This requires no temp files, and preserves all output. The important part is the 2>&1 that redirects STDERR to STDOUT.



                                    Send the entire output via default cron mailer config:



                                    1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"


                                    Same but with a specific address and subject:



                                    (address can also be changed by setting MAILTO=xxxx for the entire crontab file)



                                    1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address


                                    You can even perform multiple actions on error and add to email:



                                    1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" ; ls -ltr /backup/dir ; 


                                    This will work for simple commands. If you are dealing with complex pipes (find / -type f | grep -v bla | tar something-or-other), then you're better off moving the command into a script and running the script using the aforementioned approach. The reason is that if any part of the pipe outputs to STDERR, you'll still get emails.






                                    share|improve this answer















                                    Here is another variation that I've successfully utilized for many years - capture output and print it out only on error, triggering an email. This requires no temp files, and preserves all output. The important part is the 2>&1 that redirects STDERR to STDOUT.



                                    Send the entire output via default cron mailer config:



                                    1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"


                                    Same but with a specific address and subject:



                                    (address can also be changed by setting MAILTO=xxxx for the entire crontab file)



                                    1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address


                                    You can even perform multiple actions on error and add to email:



                                    1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" ; ls -ltr /backup/dir ; 


                                    This will work for simple commands. If you are dealing with complex pipes (find / -type f | grep -v bla | tar something-or-other), then you're better off moving the command into a script and running the script using the aforementioned approach. The reason is that if any part of the pipe outputs to STDERR, you'll still get emails.







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited Apr 29 at 15:41

























                                    answered Nov 30 '18 at 13:19









                                    AkomAkom

                                    1613




                                    1613



























                                        draft saved

                                        draft discarded
















































                                        Thanks for contributing an answer to Server Fault!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid


                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.

                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function ()
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f226074%2fcron-only-get-errors-in-emails%23new-answer', 'question_page');

                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        Club Baloncesto Breogán Índice Historia | Pavillón | Nome | O Breogán na cultura popular | Xogadores | Adestradores | Presidentes | Palmarés | Historial | Líderes | Notas | Véxase tamén | Menú de navegacióncbbreogan.galCadroGuía oficial da ACB 2009-10, páxina 201Guía oficial ACB 1992, páxina 183. Editorial DB.É de 6.500 espectadores sentados axeitándose á última normativa"Estudiantes Junior, entre as mellores canteiras"o orixinalHemeroteca El Mundo Deportivo, 16 setembro de 1970, páxina 12Historia do BreogánAlfredo Pérez, o último canoneiroHistoria C.B. BreogánHemeroteca de El Mundo DeportivoJimmy Wright, norteamericano do Breogán deixará Lugo por ameazas de morteResultados de Breogán en 1986-87Resultados de Breogán en 1990-91Ficha de Velimir Perasović en acb.comResultados de Breogán en 1994-95Breogán arrasa al Barça. "El Mundo Deportivo", 27 de setembro de 1999, páxina 58CB Breogán - FC BarcelonaA FEB invita a participar nunha nova Liga EuropeaCharlie Bell na prensa estatalMáximos anotadores 2005Tempada 2005-06 : Tódolos Xogadores da Xornada""Non quero pensar nunha man negra, mais pregúntome que está a pasar""o orixinalRaúl López, orgulloso dos xogadores, presume da boa saúde económica do BreogánJulio González confirma que cesa como presidente del BreogánHomenaxe a Lisardo GómezA tempada do rexurdimento celesteEntrevista a Lisardo GómezEl COB dinamita el Pazo para forzar el quinto (69-73)Cafés Candelas, patrocinador del CB Breogán"Suso Lázare, novo presidente do Breogán"o orixinalCafés Candelas Breogán firma el mayor triunfo de la historiaEl Breogán realizará 17 homenajes por su cincuenta aniversario"O Breogán honra ao seu fundador e primeiro presidente"o orixinalMiguel Giao recibiu a homenaxe do PazoHomenaxe aos primeiros gladiadores celestesO home que nos amosa como ver o Breo co corazónTita Franco será homenaxeada polos #50anosdeBreoJulio Vila recibirá unha homenaxe in memoriam polos #50anosdeBreo"O Breogán homenaxeará aos seus aboados máis veteráns"Pechada ovación a «Capi» Sanmartín e Ricardo «Corazón de González»Homenaxe por décadas de informaciónPaco García volve ao Pazo con motivo do 50 aniversario"Resultados y clasificaciones""O Cafés Candelas Breogán, campión da Copa Princesa""O Cafés Candelas Breogán, equipo ACB"C.B. Breogán"Proxecto social"o orixinal"Centros asociados"o orixinalFicha en imdb.comMario Camus trata la recuperación del amor en 'La vieja música', su última película"Páxina web oficial""Club Baloncesto Breogán""C. B. Breogán S.A.D."eehttp://www.fegaba.com

                                        Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070

                                        Cegueira Índice Epidemioloxía | Deficiencia visual | Tipos de cegueira | Principais causas de cegueira | Tratamento | Técnicas de adaptación e axudas | Vida dos cegos | Primeiros auxilios | Crenzas respecto das persoas cegas | Crenzas das persoas cegas | O neno deficiente visual | Aspectos psicolóxicos da cegueira | Notas | Véxase tamén | Menú de navegación54.054.154.436928256blindnessDicionario da Real Academia GalegaPortal das Palabras"International Standards: Visual Standards — Aspects and Ranges of Vision Loss with Emphasis on Population Surveys.""Visual impairment and blindness""Presentan un plan para previr a cegueira"o orixinalACCDV Associació Catalana de Cecs i Disminuïts Visuals - PMFTrachoma"Effect of gene therapy on visual function in Leber's congenital amaurosis"1844137110.1056/NEJMoa0802268Cans guía - os mellores amigos dos cegosArquivadoEscola de cans guía para cegos en Mortágua, PortugalArquivado"Tecnología para ciegos y deficientes visuales. Recopilación de recursos gratuitos en la Red""Colorino""‘COL.diesis’, escuchar los sonidos del color""COL.diesis: Transforming Colour into Melody and Implementing the Result in a Colour Sensor Device"o orixinal"Sistema de desarrollo de sinestesia color-sonido para invidentes utilizando un protocolo de audio""Enseñanza táctil - geometría y color. Juegos didácticos para niños ciegos y videntes""Sistema Constanz"L'ocupació laboral dels cecs a l'Estat espanyol està pràcticament equiparada a la de les persones amb visió, entrevista amb Pedro ZuritaONCE (Organización Nacional de Cegos de España)Prevención da cegueiraDescrición de deficiencias visuais (Disc@pnet)Braillín, un boneco atractivo para calquera neno, con ou sen discapacidade, que permite familiarizarse co sistema de escritura e lectura brailleAxudas Técnicas36838ID00897494007150-90057129528256DOID:1432HP:0000618D001766C10.597.751.941.162C97109C0155020