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

                                        Wikipedia:Vital articles Мазмуну Biography - Өмүр баян Philosophy and psychology - Философия жана психология Religion - Дин Social sciences - Коомдук илимдер Language and literature - Тил жана адабият Science - Илим Technology - Технология Arts and recreation - Искусство жана эс алуу History and geography - Тарых жана география Навигация менюсу

                                        Bruxelas-Capital Índice Historia | Composición | Situación lingüística | Clima | Cidades irmandadas | Notas | Véxase tamén | Menú de navegacióneO uso das linguas en Bruxelas e a situación do neerlandés"Rexión de Bruxelas Capital"o orixinalSitio da rexiónPáxina de Bruselas no sitio da Oficina de Promoción Turística de Valonia e BruxelasMapa Interactivo da Rexión de Bruxelas-CapitaleeWorldCat332144929079854441105155190212ID28008674080552-90000 0001 0666 3698n94104302ID540940339365017018237

                                        What should I write in an apology letter, since I have decided not to join a company after accepting an offer letterShould I keep looking after accepting a job offer?What should I do when I've been verbally told I would get an offer letter, but still haven't gotten one after 4 weeks?Do I accept an offer from a company that I am not likely to join?New job hasn't confirmed starting date and I want to give current employer as much notice as possibleHow should I address my manager in my resignation letter?HR delayed background verification, now jobless as resignedNo email communication after accepting a formal written offer. How should I phrase the call?What should I do if after receiving a verbal offer letter I am informed that my written job offer is put on hold due to some internal issues?Should I inform the current employer that I am about to resign within 1-2 weeks since I have signed the offer letter and waiting for visa?What company will do, if I send their offer letter to another company