How do I set Cron to send emails?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP








up vote
3
down vote

favorite












I have the following cron job command running once daily on my NAS device:



find /nfs/rpiggott/complete -mtime +45 -exec rm ;


I am wondering if there is a way to pipe a list that will result in the cron sending an e-mail to me showing what file it delete and / or any errors experienced.










share|improve this question



























    up vote
    3
    down vote

    favorite












    I have the following cron job command running once daily on my NAS device:



    find /nfs/rpiggott/complete -mtime +45 -exec rm ;


    I am wondering if there is a way to pipe a list that will result in the cron sending an e-mail to me showing what file it delete and / or any errors experienced.










    share|improve this question

























      up vote
      3
      down vote

      favorite









      up vote
      3
      down vote

      favorite











      I have the following cron job command running once daily on my NAS device:



      find /nfs/rpiggott/complete -mtime +45 -exec rm ;


      I am wondering if there is a way to pipe a list that will result in the cron sending an e-mail to me showing what file it delete and / or any errors experienced.










      share|improve this question















      I have the following cron job command running once daily on my NAS device:



      find /nfs/rpiggott/complete -mtime +45 -exec rm ;


      I am wondering if there is a way to pipe a list that will result in the cron sending an e-mail to me showing what file it delete and / or any errors experienced.







      command-line cron email rm






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Apr 3 at 21:05









      pa4080

      12.2k52256




      12.2k52256










      asked Apr 1 at 1:28









      Ron Piggott

      2541218




      2541218




















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          3
          down vote



          accepted










          For this purposes you system should be able to send emails. So you could install and configure postfix:



          sudo apt install postfix



          • For General type of mail configuration choose Internet Site, if you want to do more detailed configuration use the command:



            sudo dpkg-reconfigure postfix


          At this stage Cron will start to send emails. Everything that usually will be outputted to the STDOUT (if you are execute a command in the command line), including all error messages, will be sent to the local mailbox of the user that runs the Cronjob.



          The default location of local user's mail boxes is /var/mail/. You can install the command-line email client mutt to read your user's email box via the command line in a convenient way:



          sudo apt install mutt


          • Note mutt installation process will involve installation and configuration of postfix if it isn't done before.

          You can change the default destination mailbox by changing the value of the envvar MAILTO within crontab, before the definition of the Cronjob.



          Please note: unless you haven't enabled SSL/TLS certificate within you send mail configuration, most of the public mail servers will ignore your emails in some way. For example mail.google.com will put them into the spam. If this is a server instance and you already have SSL/TLS certificate for your primary domain follow this nice manual to attach it to Postfix.



          Once your system is able to send emails you must make your Cronjob more verbose (for e.g. add -v to the rm command) and must set proper value of MAILTO. So your crontab should look as this:



          MAILTO="example.email@gmail.com"
          * * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v ;



          Another approach is to create a script (which will be executed via crontab) that includes your command and uses mail, mutt, ssmtp or sendmail to send emails. See the bottom of the references for mor details.




          References and further reading:



          • Issues getting crontab to work


          • How To Install and Configure Postfix on Ubuntu 16.04


          • Postfix TLS Support


          • How to send mail from the command line?


          • 5 Ways to Send Email From Linux Command Line






          share|improve this answer


















          • 1




            Recent vesions of find also recognize the + sign instead of ;, i.e. find … -exec rm -v + (instead of find … -exec rm -v ;. Depending on the number of files this will greatly improve performance: with ; the rm command is run once per file (i.e. 1000 times for 1000 files) whereas the + variant will run rm with as many filenames as parameter as fit into the command line (i.e. it will call rm only twice or so, once with 800 files and a second time with 200 files).
            – PerlDuck
            Apr 1 at 16:19











          • (continued) A drawback might be unspecific error messages like rm [800 filenames]: failed whereas the ; would help to better identify the error because just a single filename is given.
            – PerlDuck
            Apr 1 at 16:22











          • I just tested the difference between the outputs when ; or + is engaged while -exec rm -v is used, the output is identical so probably + is a better choice. @PerlDuck
            – pa4080
            Apr 1 at 16:27







          • 1




            I think the real difference comes when there are errors. However, if you (or the OP) has only a few files to process (<100), then there's no significant difference, I guess.
            – PerlDuck
            Apr 1 at 16:29

















          up vote
          1
          down vote













          I used a pretty simple method to get cron to send emails: Backup Linux configuration, scripts and documents to Gmail.



          Simplest way to automate sending email



          From Send email alerts using ssmtp we find the simplest way of sending email automated from terminal or script. The installation steps are straight forward:



          sudo apt install ssmtp
          sudo nano /etc/ssmtp/ssmtp.conf
          # Change "MyEmailAddress" and "MyPassword" to your own.


          There is one step not mentioned; Google will send you an email confirming you want to allow a "less secure" application to send mail with your account:



          gmail turns on less secure apps for email



          There is an annoyance of getting too much mail. For example every time you mistype your sudo password you will get an email: Stop emailing me bad sudo password attempts






          share|improve this answer






















            Your Answer







            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "89"
            ;
            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',
            convertImagesToLinks: true,
            noModals: false,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1020965%2fhow-do-i-set-cron-to-send-emails%23new-answer', 'question_page');

            );

            Post as a guest






























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            3
            down vote



            accepted










            For this purposes you system should be able to send emails. So you could install and configure postfix:



            sudo apt install postfix



            • For General type of mail configuration choose Internet Site, if you want to do more detailed configuration use the command:



              sudo dpkg-reconfigure postfix


            At this stage Cron will start to send emails. Everything that usually will be outputted to the STDOUT (if you are execute a command in the command line), including all error messages, will be sent to the local mailbox of the user that runs the Cronjob.



            The default location of local user's mail boxes is /var/mail/. You can install the command-line email client mutt to read your user's email box via the command line in a convenient way:



            sudo apt install mutt


            • Note mutt installation process will involve installation and configuration of postfix if it isn't done before.

            You can change the default destination mailbox by changing the value of the envvar MAILTO within crontab, before the definition of the Cronjob.



            Please note: unless you haven't enabled SSL/TLS certificate within you send mail configuration, most of the public mail servers will ignore your emails in some way. For example mail.google.com will put them into the spam. If this is a server instance and you already have SSL/TLS certificate for your primary domain follow this nice manual to attach it to Postfix.



            Once your system is able to send emails you must make your Cronjob more verbose (for e.g. add -v to the rm command) and must set proper value of MAILTO. So your crontab should look as this:



            MAILTO="example.email@gmail.com"
            * * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v ;



            Another approach is to create a script (which will be executed via crontab) that includes your command and uses mail, mutt, ssmtp or sendmail to send emails. See the bottom of the references for mor details.




            References and further reading:



            • Issues getting crontab to work


            • How To Install and Configure Postfix on Ubuntu 16.04


            • Postfix TLS Support


            • How to send mail from the command line?


            • 5 Ways to Send Email From Linux Command Line






            share|improve this answer


















            • 1




              Recent vesions of find also recognize the + sign instead of ;, i.e. find … -exec rm -v + (instead of find … -exec rm -v ;. Depending on the number of files this will greatly improve performance: with ; the rm command is run once per file (i.e. 1000 times for 1000 files) whereas the + variant will run rm with as many filenames as parameter as fit into the command line (i.e. it will call rm only twice or so, once with 800 files and a second time with 200 files).
              – PerlDuck
              Apr 1 at 16:19











            • (continued) A drawback might be unspecific error messages like rm [800 filenames]: failed whereas the ; would help to better identify the error because just a single filename is given.
              – PerlDuck
              Apr 1 at 16:22











            • I just tested the difference between the outputs when ; or + is engaged while -exec rm -v is used, the output is identical so probably + is a better choice. @PerlDuck
              – pa4080
              Apr 1 at 16:27







            • 1




              I think the real difference comes when there are errors. However, if you (or the OP) has only a few files to process (<100), then there's no significant difference, I guess.
              – PerlDuck
              Apr 1 at 16:29














            up vote
            3
            down vote



            accepted










            For this purposes you system should be able to send emails. So you could install and configure postfix:



            sudo apt install postfix



            • For General type of mail configuration choose Internet Site, if you want to do more detailed configuration use the command:



              sudo dpkg-reconfigure postfix


            At this stage Cron will start to send emails. Everything that usually will be outputted to the STDOUT (if you are execute a command in the command line), including all error messages, will be sent to the local mailbox of the user that runs the Cronjob.



            The default location of local user's mail boxes is /var/mail/. You can install the command-line email client mutt to read your user's email box via the command line in a convenient way:



            sudo apt install mutt


            • Note mutt installation process will involve installation and configuration of postfix if it isn't done before.

            You can change the default destination mailbox by changing the value of the envvar MAILTO within crontab, before the definition of the Cronjob.



            Please note: unless you haven't enabled SSL/TLS certificate within you send mail configuration, most of the public mail servers will ignore your emails in some way. For example mail.google.com will put them into the spam. If this is a server instance and you already have SSL/TLS certificate for your primary domain follow this nice manual to attach it to Postfix.



            Once your system is able to send emails you must make your Cronjob more verbose (for e.g. add -v to the rm command) and must set proper value of MAILTO. So your crontab should look as this:



            MAILTO="example.email@gmail.com"
            * * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v ;



            Another approach is to create a script (which will be executed via crontab) that includes your command and uses mail, mutt, ssmtp or sendmail to send emails. See the bottom of the references for mor details.




            References and further reading:



            • Issues getting crontab to work


            • How To Install and Configure Postfix on Ubuntu 16.04


            • Postfix TLS Support


            • How to send mail from the command line?


            • 5 Ways to Send Email From Linux Command Line






            share|improve this answer


















            • 1




              Recent vesions of find also recognize the + sign instead of ;, i.e. find … -exec rm -v + (instead of find … -exec rm -v ;. Depending on the number of files this will greatly improve performance: with ; the rm command is run once per file (i.e. 1000 times for 1000 files) whereas the + variant will run rm with as many filenames as parameter as fit into the command line (i.e. it will call rm only twice or so, once with 800 files and a second time with 200 files).
              – PerlDuck
              Apr 1 at 16:19











            • (continued) A drawback might be unspecific error messages like rm [800 filenames]: failed whereas the ; would help to better identify the error because just a single filename is given.
              – PerlDuck
              Apr 1 at 16:22











            • I just tested the difference between the outputs when ; or + is engaged while -exec rm -v is used, the output is identical so probably + is a better choice. @PerlDuck
              – pa4080
              Apr 1 at 16:27







            • 1




              I think the real difference comes when there are errors. However, if you (or the OP) has only a few files to process (<100), then there's no significant difference, I guess.
              – PerlDuck
              Apr 1 at 16:29












            up vote
            3
            down vote



            accepted







            up vote
            3
            down vote



            accepted






            For this purposes you system should be able to send emails. So you could install and configure postfix:



            sudo apt install postfix



            • For General type of mail configuration choose Internet Site, if you want to do more detailed configuration use the command:



              sudo dpkg-reconfigure postfix


            At this stage Cron will start to send emails. Everything that usually will be outputted to the STDOUT (if you are execute a command in the command line), including all error messages, will be sent to the local mailbox of the user that runs the Cronjob.



            The default location of local user's mail boxes is /var/mail/. You can install the command-line email client mutt to read your user's email box via the command line in a convenient way:



            sudo apt install mutt


            • Note mutt installation process will involve installation and configuration of postfix if it isn't done before.

            You can change the default destination mailbox by changing the value of the envvar MAILTO within crontab, before the definition of the Cronjob.



            Please note: unless you haven't enabled SSL/TLS certificate within you send mail configuration, most of the public mail servers will ignore your emails in some way. For example mail.google.com will put them into the spam. If this is a server instance and you already have SSL/TLS certificate for your primary domain follow this nice manual to attach it to Postfix.



            Once your system is able to send emails you must make your Cronjob more verbose (for e.g. add -v to the rm command) and must set proper value of MAILTO. So your crontab should look as this:



            MAILTO="example.email@gmail.com"
            * * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v ;



            Another approach is to create a script (which will be executed via crontab) that includes your command and uses mail, mutt, ssmtp or sendmail to send emails. See the bottom of the references for mor details.




            References and further reading:



            • Issues getting crontab to work


            • How To Install and Configure Postfix on Ubuntu 16.04


            • Postfix TLS Support


            • How to send mail from the command line?


            • 5 Ways to Send Email From Linux Command Line






            share|improve this answer














            For this purposes you system should be able to send emails. So you could install and configure postfix:



            sudo apt install postfix



            • For General type of mail configuration choose Internet Site, if you want to do more detailed configuration use the command:



              sudo dpkg-reconfigure postfix


            At this stage Cron will start to send emails. Everything that usually will be outputted to the STDOUT (if you are execute a command in the command line), including all error messages, will be sent to the local mailbox of the user that runs the Cronjob.



            The default location of local user's mail boxes is /var/mail/. You can install the command-line email client mutt to read your user's email box via the command line in a convenient way:



            sudo apt install mutt


            • Note mutt installation process will involve installation and configuration of postfix if it isn't done before.

            You can change the default destination mailbox by changing the value of the envvar MAILTO within crontab, before the definition of the Cronjob.



            Please note: unless you haven't enabled SSL/TLS certificate within you send mail configuration, most of the public mail servers will ignore your emails in some way. For example mail.google.com will put them into the spam. If this is a server instance and you already have SSL/TLS certificate for your primary domain follow this nice manual to attach it to Postfix.



            Once your system is able to send emails you must make your Cronjob more verbose (for e.g. add -v to the rm command) and must set proper value of MAILTO. So your crontab should look as this:



            MAILTO="example.email@gmail.com"
            * * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v ;



            Another approach is to create a script (which will be executed via crontab) that includes your command and uses mail, mutt, ssmtp or sendmail to send emails. See the bottom of the references for mor details.




            References and further reading:



            • Issues getting crontab to work


            • How To Install and Configure Postfix on Ubuntu 16.04


            • Postfix TLS Support


            • How to send mail from the command line?


            • 5 Ways to Send Email From Linux Command Line







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Jun 28 at 8:54

























            answered Apr 1 at 16:02









            pa4080

            12.2k52256




            12.2k52256







            • 1




              Recent vesions of find also recognize the + sign instead of ;, i.e. find … -exec rm -v + (instead of find … -exec rm -v ;. Depending on the number of files this will greatly improve performance: with ; the rm command is run once per file (i.e. 1000 times for 1000 files) whereas the + variant will run rm with as many filenames as parameter as fit into the command line (i.e. it will call rm only twice or so, once with 800 files and a second time with 200 files).
              – PerlDuck
              Apr 1 at 16:19











            • (continued) A drawback might be unspecific error messages like rm [800 filenames]: failed whereas the ; would help to better identify the error because just a single filename is given.
              – PerlDuck
              Apr 1 at 16:22











            • I just tested the difference between the outputs when ; or + is engaged while -exec rm -v is used, the output is identical so probably + is a better choice. @PerlDuck
              – pa4080
              Apr 1 at 16:27







            • 1




              I think the real difference comes when there are errors. However, if you (or the OP) has only a few files to process (<100), then there's no significant difference, I guess.
              – PerlDuck
              Apr 1 at 16:29












            • 1




              Recent vesions of find also recognize the + sign instead of ;, i.e. find … -exec rm -v + (instead of find … -exec rm -v ;. Depending on the number of files this will greatly improve performance: with ; the rm command is run once per file (i.e. 1000 times for 1000 files) whereas the + variant will run rm with as many filenames as parameter as fit into the command line (i.e. it will call rm only twice or so, once with 800 files and a second time with 200 files).
              – PerlDuck
              Apr 1 at 16:19











            • (continued) A drawback might be unspecific error messages like rm [800 filenames]: failed whereas the ; would help to better identify the error because just a single filename is given.
              – PerlDuck
              Apr 1 at 16:22











            • I just tested the difference between the outputs when ; or + is engaged while -exec rm -v is used, the output is identical so probably + is a better choice. @PerlDuck
              – pa4080
              Apr 1 at 16:27







            • 1




              I think the real difference comes when there are errors. However, if you (or the OP) has only a few files to process (<100), then there's no significant difference, I guess.
              – PerlDuck
              Apr 1 at 16:29







            1




            1




            Recent vesions of find also recognize the + sign instead of ;, i.e. find … -exec rm -v + (instead of find … -exec rm -v ;. Depending on the number of files this will greatly improve performance: with ; the rm command is run once per file (i.e. 1000 times for 1000 files) whereas the + variant will run rm with as many filenames as parameter as fit into the command line (i.e. it will call rm only twice or so, once with 800 files and a second time with 200 files).
            – PerlDuck
            Apr 1 at 16:19





            Recent vesions of find also recognize the + sign instead of ;, i.e. find … -exec rm -v + (instead of find … -exec rm -v ;. Depending on the number of files this will greatly improve performance: with ; the rm command is run once per file (i.e. 1000 times for 1000 files) whereas the + variant will run rm with as many filenames as parameter as fit into the command line (i.e. it will call rm only twice or so, once with 800 files and a second time with 200 files).
            – PerlDuck
            Apr 1 at 16:19













            (continued) A drawback might be unspecific error messages like rm [800 filenames]: failed whereas the ; would help to better identify the error because just a single filename is given.
            – PerlDuck
            Apr 1 at 16:22





            (continued) A drawback might be unspecific error messages like rm [800 filenames]: failed whereas the ; would help to better identify the error because just a single filename is given.
            – PerlDuck
            Apr 1 at 16:22













            I just tested the difference between the outputs when ; or + is engaged while -exec rm -v is used, the output is identical so probably + is a better choice. @PerlDuck
            – pa4080
            Apr 1 at 16:27





            I just tested the difference between the outputs when ; or + is engaged while -exec rm -v is used, the output is identical so probably + is a better choice. @PerlDuck
            – pa4080
            Apr 1 at 16:27





            1




            1




            I think the real difference comes when there are errors. However, if you (or the OP) has only a few files to process (<100), then there's no significant difference, I guess.
            – PerlDuck
            Apr 1 at 16:29




            I think the real difference comes when there are errors. However, if you (or the OP) has only a few files to process (<100), then there's no significant difference, I guess.
            – PerlDuck
            Apr 1 at 16:29












            up vote
            1
            down vote













            I used a pretty simple method to get cron to send emails: Backup Linux configuration, scripts and documents to Gmail.



            Simplest way to automate sending email



            From Send email alerts using ssmtp we find the simplest way of sending email automated from terminal or script. The installation steps are straight forward:



            sudo apt install ssmtp
            sudo nano /etc/ssmtp/ssmtp.conf
            # Change "MyEmailAddress" and "MyPassword" to your own.


            There is one step not mentioned; Google will send you an email confirming you want to allow a "less secure" application to send mail with your account:



            gmail turns on less secure apps for email



            There is an annoyance of getting too much mail. For example every time you mistype your sudo password you will get an email: Stop emailing me bad sudo password attempts






            share|improve this answer


























              up vote
              1
              down vote













              I used a pretty simple method to get cron to send emails: Backup Linux configuration, scripts and documents to Gmail.



              Simplest way to automate sending email



              From Send email alerts using ssmtp we find the simplest way of sending email automated from terminal or script. The installation steps are straight forward:



              sudo apt install ssmtp
              sudo nano /etc/ssmtp/ssmtp.conf
              # Change "MyEmailAddress" and "MyPassword" to your own.


              There is one step not mentioned; Google will send you an email confirming you want to allow a "less secure" application to send mail with your account:



              gmail turns on less secure apps for email



              There is an annoyance of getting too much mail. For example every time you mistype your sudo password you will get an email: Stop emailing me bad sudo password attempts






              share|improve this answer
























                up vote
                1
                down vote










                up vote
                1
                down vote









                I used a pretty simple method to get cron to send emails: Backup Linux configuration, scripts and documents to Gmail.



                Simplest way to automate sending email



                From Send email alerts using ssmtp we find the simplest way of sending email automated from terminal or script. The installation steps are straight forward:



                sudo apt install ssmtp
                sudo nano /etc/ssmtp/ssmtp.conf
                # Change "MyEmailAddress" and "MyPassword" to your own.


                There is one step not mentioned; Google will send you an email confirming you want to allow a "less secure" application to send mail with your account:



                gmail turns on less secure apps for email



                There is an annoyance of getting too much mail. For example every time you mistype your sudo password you will get an email: Stop emailing me bad sudo password attempts






                share|improve this answer














                I used a pretty simple method to get cron to send emails: Backup Linux configuration, scripts and documents to Gmail.



                Simplest way to automate sending email



                From Send email alerts using ssmtp we find the simplest way of sending email automated from terminal or script. The installation steps are straight forward:



                sudo apt install ssmtp
                sudo nano /etc/ssmtp/ssmtp.conf
                # Change "MyEmailAddress" and "MyPassword" to your own.


                There is one step not mentioned; Google will send you an email confirming you want to allow a "less secure" application to send mail with your account:



                gmail turns on less secure apps for email



                There is an annoyance of getting too much mail. For example every time you mistype your sudo password you will get an email: Stop emailing me bad sudo password attempts







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Aug 5 at 17:11

























                answered Apr 4 at 1:50









                WinEunuuchs2Unix

                35.8k759133




                35.8k759133



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1020965%2fhow-do-i-set-cron-to-send-emails%23new-answer', 'question_page');

                    );

                    Post as a guest













































































                    Popular posts from this blog

                    pylint3 and pip3 broken

                    Missing snmpget and snmpwalk

                    How to enroll fingerprints to Ubuntu 17.10 with VFS491