Crontab Running script at startup












1















I have a .sh that executes a command. I want to use crontab -e and enter into the file @reboot /path/to/command.



How do execute this in one command instead of separately running crontab -e then manually insert the line and then saving the file.










share|improve this question



























    1















    I have a .sh that executes a command. I want to use crontab -e and enter into the file @reboot /path/to/command.



    How do execute this in one command instead of separately running crontab -e then manually insert the line and then saving the file.










    share|improve this question

























      1












      1








      1








      I have a .sh that executes a command. I want to use crontab -e and enter into the file @reboot /path/to/command.



      How do execute this in one command instead of separately running crontab -e then manually insert the line and then saving the file.










      share|improve this question














      I have a .sh that executes a command. I want to use crontab -e and enter into the file @reboot /path/to/command.



      How do execute this in one command instead of separately running crontab -e then manually insert the line and then saving the file.







      bash cron






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jun 2 '17 at 15:22









      Murda RalphMurda Ralph

      612




      612






















          2 Answers
          2






          active

          oldest

          votes


















          1














          When you use crontab -e a file will be created at /var/spool/cron/crontabs/ which its name is equal to your uesername.



          So just redirect your desired line to this file:



          echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER



          • using tee -a we are telling tee to append @reboot /path/to/file.sh at the end of this file instead of overwriting it.

          • if it's not there it will be created.






          share|improve this answer

































            1














            Probably the right way to do it - as explained in How to programmatically add new crontab file without replacing previous one - is to dump the existing crontab to a temporary file, modify it, then read it back in. For example:



            cmd='@reboot /path/to/file'
            tmpfile=$(mktemp) && crontab -l > "$tmpfile"
            cmd='@reboot /path/to/command'
            grep -Fxq "$cmd" "$tmpfile" || echo "$cmd" >> "$tmpfile"
            crontab "$tmpfile" && rm -- "$tmpfile"


            A "quick'n'dirty" option - if you don't care about checking - would be



            crontab -l | sed '$a@reboot /path/to/command' | crontab -


            assuming GNU sed, which allows append text on one line.





            Note: unlike writing to /var/spool/cron/crontabs directly, this approach doesn't need sudo (because crontab is setuid).






            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',
              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%2faskubuntu.com%2fquestions%2f921491%2fcrontab-running-script-at-startup%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              When you use crontab -e a file will be created at /var/spool/cron/crontabs/ which its name is equal to your uesername.



              So just redirect your desired line to this file:



              echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER



              • using tee -a we are telling tee to append @reboot /path/to/file.sh at the end of this file instead of overwriting it.

              • if it's not there it will be created.






              share|improve this answer






























                1














                When you use crontab -e a file will be created at /var/spool/cron/crontabs/ which its name is equal to your uesername.



                So just redirect your desired line to this file:



                echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER



                • using tee -a we are telling tee to append @reboot /path/to/file.sh at the end of this file instead of overwriting it.

                • if it's not there it will be created.






                share|improve this answer




























                  1












                  1








                  1







                  When you use crontab -e a file will be created at /var/spool/cron/crontabs/ which its name is equal to your uesername.



                  So just redirect your desired line to this file:



                  echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER



                  • using tee -a we are telling tee to append @reboot /path/to/file.sh at the end of this file instead of overwriting it.

                  • if it's not there it will be created.






                  share|improve this answer















                  When you use crontab -e a file will be created at /var/spool/cron/crontabs/ which its name is equal to your uesername.



                  So just redirect your desired line to this file:



                  echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER



                  • using tee -a we are telling tee to append @reboot /path/to/file.sh at the end of this file instead of overwriting it.

                  • if it's not there it will be created.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jun 2 '17 at 15:46

























                  answered Jun 2 '17 at 15:31









                  RavexinaRavexina

                  32k1482112




                  32k1482112

























                      1














                      Probably the right way to do it - as explained in How to programmatically add new crontab file without replacing previous one - is to dump the existing crontab to a temporary file, modify it, then read it back in. For example:



                      cmd='@reboot /path/to/file'
                      tmpfile=$(mktemp) && crontab -l > "$tmpfile"
                      cmd='@reboot /path/to/command'
                      grep -Fxq "$cmd" "$tmpfile" || echo "$cmd" >> "$tmpfile"
                      crontab "$tmpfile" && rm -- "$tmpfile"


                      A "quick'n'dirty" option - if you don't care about checking - would be



                      crontab -l | sed '$a@reboot /path/to/command' | crontab -


                      assuming GNU sed, which allows append text on one line.





                      Note: unlike writing to /var/spool/cron/crontabs directly, this approach doesn't need sudo (because crontab is setuid).






                      share|improve this answer






























                        1














                        Probably the right way to do it - as explained in How to programmatically add new crontab file without replacing previous one - is to dump the existing crontab to a temporary file, modify it, then read it back in. For example:



                        cmd='@reboot /path/to/file'
                        tmpfile=$(mktemp) && crontab -l > "$tmpfile"
                        cmd='@reboot /path/to/command'
                        grep -Fxq "$cmd" "$tmpfile" || echo "$cmd" >> "$tmpfile"
                        crontab "$tmpfile" && rm -- "$tmpfile"


                        A "quick'n'dirty" option - if you don't care about checking - would be



                        crontab -l | sed '$a@reboot /path/to/command' | crontab -


                        assuming GNU sed, which allows append text on one line.





                        Note: unlike writing to /var/spool/cron/crontabs directly, this approach doesn't need sudo (because crontab is setuid).






                        share|improve this answer




























                          1












                          1








                          1







                          Probably the right way to do it - as explained in How to programmatically add new crontab file without replacing previous one - is to dump the existing crontab to a temporary file, modify it, then read it back in. For example:



                          cmd='@reboot /path/to/file'
                          tmpfile=$(mktemp) && crontab -l > "$tmpfile"
                          cmd='@reboot /path/to/command'
                          grep -Fxq "$cmd" "$tmpfile" || echo "$cmd" >> "$tmpfile"
                          crontab "$tmpfile" && rm -- "$tmpfile"


                          A "quick'n'dirty" option - if you don't care about checking - would be



                          crontab -l | sed '$a@reboot /path/to/command' | crontab -


                          assuming GNU sed, which allows append text on one line.





                          Note: unlike writing to /var/spool/cron/crontabs directly, this approach doesn't need sudo (because crontab is setuid).






                          share|improve this answer















                          Probably the right way to do it - as explained in How to programmatically add new crontab file without replacing previous one - is to dump the existing crontab to a temporary file, modify it, then read it back in. For example:



                          cmd='@reboot /path/to/file'
                          tmpfile=$(mktemp) && crontab -l > "$tmpfile"
                          cmd='@reboot /path/to/command'
                          grep -Fxq "$cmd" "$tmpfile" || echo "$cmd" >> "$tmpfile"
                          crontab "$tmpfile" && rm -- "$tmpfile"


                          A "quick'n'dirty" option - if you don't care about checking - would be



                          crontab -l | sed '$a@reboot /path/to/command' | crontab -


                          assuming GNU sed, which allows append text on one line.





                          Note: unlike writing to /var/spool/cron/crontabs directly, this approach doesn't need sudo (because crontab is setuid).







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Jun 2 '17 at 17:50

























                          answered Jun 2 '17 at 17:40









                          steeldriversteeldriver

                          66.6k11107179




                          66.6k11107179






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Ask Ubuntu!


                              • 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%2faskubuntu.com%2fquestions%2f921491%2fcrontab-running-script-at-startup%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

                              How did Captain America manage to do this?

                              迪纳利

                              南乌拉尔铁路局