I want to run a Python 3 script on startup and in an endless loop on my Raspberry Pi ...

How often does castling occur in grandmaster games?

Why is Nikon 1.4g better when Nikon 1.8g is sharper?

Why does the remaining Rebel fleet at the end of Rogue One seem dramatically larger than the one in A New Hope?

Why wasn't DOSKEY integrated with COMMAND.COM?

How fail-safe is nr as stop bytes?

Central Vacuuming: Is it worth it, and how does it compare to normal vacuuming?

Trademark violation for app?

A term for a woman complaining about things/begging in a cute/childish way

ArcGIS Pro Python arcpy.CreatePersonalGDB_management

Most bit efficient text communication method?

Can anything be seen from the center of the Boötes void? How dark would it be?

Why weren't discrete x86 CPUs ever used in game hardware?

Drawing without replacement: why is the order of draw irrelevant?

How to compare two different files line by line in unix?

SF book about people trapped in a series of worlds they imagine

How does light 'choose' between wave and particle behaviour?

What order were files/directories outputted in dir?

What are the diatonic extended chords of C major?

What do you call the main part of a joke?

Dating a Former Employee

Amount of permutations on an NxNxN Rubik's Cube

How come Sam didn't become Lord of Horn Hill?

How to react to hostile behavior from a senior developer?

Is it fair for a professor to grade us on the possession of past papers?



I want to run a Python 3 script on startup and in an endless loop on my Raspberry Pi



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)
Congratulation Joan for 50k!High usage of cpu and ram with while loopWhy are the buttons that I am using with my Pi inverted?How can I get my init.d script to be the last startup item on runlevel 4?Why won't `gpio` work from an init script?How to run a Python script on a raspberry pi via webserver?Activate virtual environment and run python script on RPi startupGPIO unexpected behaviour after 10 hours of running python scriptHow to resolve “RuntimeError: Unable to export GPIO. Try to run as root!”?RPI Run a Python script fan speed control while loop until shutdownHow to start and stop python script using button





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







2















I have created a smart vending machine using my Raspberry Pi. For now, I open the Raspberry Pi using SSH and run the script manually for every transaction.



I want to automate the process and run the script on startup. After execution I want it to run again in a loop till shut down.



If possible I can also map it to a physical button which I connect to the Raspberry Pi and whenever the button is pressed the script should run using Python 3.



How can I possibly do any of the above two things?










share|improve this question































    2















    I have created a smart vending machine using my Raspberry Pi. For now, I open the Raspberry Pi using SSH and run the script manually for every transaction.



    I want to automate the process and run the script on startup. After execution I want it to run again in a loop till shut down.



    If possible I can also map it to a physical button which I connect to the Raspberry Pi and whenever the button is pressed the script should run using Python 3.



    How can I possibly do any of the above two things?










    share|improve this question



























      2












      2








      2


      1






      I have created a smart vending machine using my Raspberry Pi. For now, I open the Raspberry Pi using SSH and run the script manually for every transaction.



      I want to automate the process and run the script on startup. After execution I want it to run again in a loop till shut down.



      If possible I can also map it to a physical button which I connect to the Raspberry Pi and whenever the button is pressed the script should run using Python 3.



      How can I possibly do any of the above two things?










      share|improve this question
















      I have created a smart vending machine using my Raspberry Pi. For now, I open the Raspberry Pi using SSH and run the script manually for every transaction.



      I want to automate the process and run the script on startup. After execution I want it to run again in a loop till shut down.



      If possible I can also map it to a physical button which I connect to the Raspberry Pi and whenever the button is pressed the script should run using Python 3.



      How can I possibly do any of the above two things?







      raspbian pi-3 gpio python-3 init.d






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 4 hours ago









      Peter Mortensen

      1,82111117




      1,82111117










      asked 16 hours ago









      Adnan FarooquiAdnan Farooqui

      266




      266






















          2 Answers
          2






          active

          oldest

          votes


















          3














          Your script is a typical use of a service. Usually a service is started once and then it is running in background until it is stopped by the service manager. The service manager can restart a script but it isn't made to be used for loops because it is working on system level with logging and dependency checking and all to manage services.



          So first you should program the endless loop within the script. Within this loop you can also check if the button is pressed and do what is needed then.



          The default init system and service manager is systemd on Raspbian and it manages services with Unit files. So you should start with a simple Unit file for your service with:



          rpi ~$ sudo systemctl --full --force edit myscript.service


          In the empty editor insert these statements, save them and quit the editor:



          [Unit]
          Description=My python3 script
          After=multi-user.target

          [Service]
          ExecStart=/full/path/to/myscript.py

          [Install]
          WantedBy=multi-user.target


          Then enable it to be started on boot up:



          rpi ~$ sudo systemctl enable myscript.service


          You can look at it's status with:



          rpi ~$ systemctl status myscript.service


          It may be that it isn't running on the first attempt because your script needs some environment conditions. We will see. For some environment settings you can look at man systemd.exec.






          share|improve this answer































            2














            We were able to use Supervisor (http://supervisord.org/
            ) to successfully have a python script run in the background on boot.



            Tutorial I Used to set it up:
            https://serversforhackers.com/c/monitoring-processes-with-supervisord



            Supervisor runs as a service and you have a configuration file where you set up your scripts that you want it to run:



            [program:your_script_name]
            command=python3 your_script_name.py
            directory=/your/file/location/here
            autostart=true
            autorestart=true


            You could either have Supervisor run your vending machine scripts on start up or start a script that is waiting for your button press which would then launch your main vending machine script.



            Steps: (Using terminal)



            sudo apt-get install -y supervisor


            Start the service



            sudo service supervisor start


            Create your config info



            sudo nano /etc/supervisor/conf.d/yourscriptname.conf


            Enter the config info and save the file:



            [program:your_script_name]
            command=python3 your_script_name.py
            directory=/your/file/location/here
            autostart=true
            autorestart=true


            Update Supervisor to include your new config file



            supervisorctl reread
            supervisorctl update


            See if your service started



            supervisorctl


            Start and stop the your script from running



            supervisorctl stop your_script_name
            supervisorctl start your_script_name




            share










            New contributor




            AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.





















              Your Answer






              StackExchange.ifUsing("editor", function () {
              return StackExchange.using("schematics", function () {
              StackExchange.schematics.init();
              });
              }, "cicuitlab");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "447"
              };
              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: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              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%2fraspberrypi.stackexchange.com%2fquestions%2f96673%2fi-want-to-run-a-python-3-script-on-startup-and-in-an-endless-loop-on-my-raspberr%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









              3














              Your script is a typical use of a service. Usually a service is started once and then it is running in background until it is stopped by the service manager. The service manager can restart a script but it isn't made to be used for loops because it is working on system level with logging and dependency checking and all to manage services.



              So first you should program the endless loop within the script. Within this loop you can also check if the button is pressed and do what is needed then.



              The default init system and service manager is systemd on Raspbian and it manages services with Unit files. So you should start with a simple Unit file for your service with:



              rpi ~$ sudo systemctl --full --force edit myscript.service


              In the empty editor insert these statements, save them and quit the editor:



              [Unit]
              Description=My python3 script
              After=multi-user.target

              [Service]
              ExecStart=/full/path/to/myscript.py

              [Install]
              WantedBy=multi-user.target


              Then enable it to be started on boot up:



              rpi ~$ sudo systemctl enable myscript.service


              You can look at it's status with:



              rpi ~$ systemctl status myscript.service


              It may be that it isn't running on the first attempt because your script needs some environment conditions. We will see. For some environment settings you can look at man systemd.exec.






              share|improve this answer




























                3














                Your script is a typical use of a service. Usually a service is started once and then it is running in background until it is stopped by the service manager. The service manager can restart a script but it isn't made to be used for loops because it is working on system level with logging and dependency checking and all to manage services.



                So first you should program the endless loop within the script. Within this loop you can also check if the button is pressed and do what is needed then.



                The default init system and service manager is systemd on Raspbian and it manages services with Unit files. So you should start with a simple Unit file for your service with:



                rpi ~$ sudo systemctl --full --force edit myscript.service


                In the empty editor insert these statements, save them and quit the editor:



                [Unit]
                Description=My python3 script
                After=multi-user.target

                [Service]
                ExecStart=/full/path/to/myscript.py

                [Install]
                WantedBy=multi-user.target


                Then enable it to be started on boot up:



                rpi ~$ sudo systemctl enable myscript.service


                You can look at it's status with:



                rpi ~$ systemctl status myscript.service


                It may be that it isn't running on the first attempt because your script needs some environment conditions. We will see. For some environment settings you can look at man systemd.exec.






                share|improve this answer


























                  3












                  3








                  3







                  Your script is a typical use of a service. Usually a service is started once and then it is running in background until it is stopped by the service manager. The service manager can restart a script but it isn't made to be used for loops because it is working on system level with logging and dependency checking and all to manage services.



                  So first you should program the endless loop within the script. Within this loop you can also check if the button is pressed and do what is needed then.



                  The default init system and service manager is systemd on Raspbian and it manages services with Unit files. So you should start with a simple Unit file for your service with:



                  rpi ~$ sudo systemctl --full --force edit myscript.service


                  In the empty editor insert these statements, save them and quit the editor:



                  [Unit]
                  Description=My python3 script
                  After=multi-user.target

                  [Service]
                  ExecStart=/full/path/to/myscript.py

                  [Install]
                  WantedBy=multi-user.target


                  Then enable it to be started on boot up:



                  rpi ~$ sudo systemctl enable myscript.service


                  You can look at it's status with:



                  rpi ~$ systemctl status myscript.service


                  It may be that it isn't running on the first attempt because your script needs some environment conditions. We will see. For some environment settings you can look at man systemd.exec.






                  share|improve this answer













                  Your script is a typical use of a service. Usually a service is started once and then it is running in background until it is stopped by the service manager. The service manager can restart a script but it isn't made to be used for loops because it is working on system level with logging and dependency checking and all to manage services.



                  So first you should program the endless loop within the script. Within this loop you can also check if the button is pressed and do what is needed then.



                  The default init system and service manager is systemd on Raspbian and it manages services with Unit files. So you should start with a simple Unit file for your service with:



                  rpi ~$ sudo systemctl --full --force edit myscript.service


                  In the empty editor insert these statements, save them and quit the editor:



                  [Unit]
                  Description=My python3 script
                  After=multi-user.target

                  [Service]
                  ExecStart=/full/path/to/myscript.py

                  [Install]
                  WantedBy=multi-user.target


                  Then enable it to be started on boot up:



                  rpi ~$ sudo systemctl enable myscript.service


                  You can look at it's status with:



                  rpi ~$ systemctl status myscript.service


                  It may be that it isn't running on the first attempt because your script needs some environment conditions. We will see. For some environment settings you can look at man systemd.exec.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 11 hours ago









                  IngoIngo

                  9,4193952




                  9,4193952

























                      2














                      We were able to use Supervisor (http://supervisord.org/
                      ) to successfully have a python script run in the background on boot.



                      Tutorial I Used to set it up:
                      https://serversforhackers.com/c/monitoring-processes-with-supervisord



                      Supervisor runs as a service and you have a configuration file where you set up your scripts that you want it to run:



                      [program:your_script_name]
                      command=python3 your_script_name.py
                      directory=/your/file/location/here
                      autostart=true
                      autorestart=true


                      You could either have Supervisor run your vending machine scripts on start up or start a script that is waiting for your button press which would then launch your main vending machine script.



                      Steps: (Using terminal)



                      sudo apt-get install -y supervisor


                      Start the service



                      sudo service supervisor start


                      Create your config info



                      sudo nano /etc/supervisor/conf.d/yourscriptname.conf


                      Enter the config info and save the file:



                      [program:your_script_name]
                      command=python3 your_script_name.py
                      directory=/your/file/location/here
                      autostart=true
                      autorestart=true


                      Update Supervisor to include your new config file



                      supervisorctl reread
                      supervisorctl update


                      See if your service started



                      supervisorctl


                      Start and stop the your script from running



                      supervisorctl stop your_script_name
                      supervisorctl start your_script_name




                      share










                      New contributor




                      AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                      Check out our Code of Conduct.

























                        2














                        We were able to use Supervisor (http://supervisord.org/
                        ) to successfully have a python script run in the background on boot.



                        Tutorial I Used to set it up:
                        https://serversforhackers.com/c/monitoring-processes-with-supervisord



                        Supervisor runs as a service and you have a configuration file where you set up your scripts that you want it to run:



                        [program:your_script_name]
                        command=python3 your_script_name.py
                        directory=/your/file/location/here
                        autostart=true
                        autorestart=true


                        You could either have Supervisor run your vending machine scripts on start up or start a script that is waiting for your button press which would then launch your main vending machine script.



                        Steps: (Using terminal)



                        sudo apt-get install -y supervisor


                        Start the service



                        sudo service supervisor start


                        Create your config info



                        sudo nano /etc/supervisor/conf.d/yourscriptname.conf


                        Enter the config info and save the file:



                        [program:your_script_name]
                        command=python3 your_script_name.py
                        directory=/your/file/location/here
                        autostart=true
                        autorestart=true


                        Update Supervisor to include your new config file



                        supervisorctl reread
                        supervisorctl update


                        See if your service started



                        supervisorctl


                        Start and stop the your script from running



                        supervisorctl stop your_script_name
                        supervisorctl start your_script_name




                        share










                        New contributor




                        AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                        Check out our Code of Conduct.























                          2












                          2








                          2







                          We were able to use Supervisor (http://supervisord.org/
                          ) to successfully have a python script run in the background on boot.



                          Tutorial I Used to set it up:
                          https://serversforhackers.com/c/monitoring-processes-with-supervisord



                          Supervisor runs as a service and you have a configuration file where you set up your scripts that you want it to run:



                          [program:your_script_name]
                          command=python3 your_script_name.py
                          directory=/your/file/location/here
                          autostart=true
                          autorestart=true


                          You could either have Supervisor run your vending machine scripts on start up or start a script that is waiting for your button press which would then launch your main vending machine script.



                          Steps: (Using terminal)



                          sudo apt-get install -y supervisor


                          Start the service



                          sudo service supervisor start


                          Create your config info



                          sudo nano /etc/supervisor/conf.d/yourscriptname.conf


                          Enter the config info and save the file:



                          [program:your_script_name]
                          command=python3 your_script_name.py
                          directory=/your/file/location/here
                          autostart=true
                          autorestart=true


                          Update Supervisor to include your new config file



                          supervisorctl reread
                          supervisorctl update


                          See if your service started



                          supervisorctl


                          Start and stop the your script from running



                          supervisorctl stop your_script_name
                          supervisorctl start your_script_name




                          share










                          New contributor




                          AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.










                          We were able to use Supervisor (http://supervisord.org/
                          ) to successfully have a python script run in the background on boot.



                          Tutorial I Used to set it up:
                          https://serversforhackers.com/c/monitoring-processes-with-supervisord



                          Supervisor runs as a service and you have a configuration file where you set up your scripts that you want it to run:



                          [program:your_script_name]
                          command=python3 your_script_name.py
                          directory=/your/file/location/here
                          autostart=true
                          autorestart=true


                          You could either have Supervisor run your vending machine scripts on start up or start a script that is waiting for your button press which would then launch your main vending machine script.



                          Steps: (Using terminal)



                          sudo apt-get install -y supervisor


                          Start the service



                          sudo service supervisor start


                          Create your config info



                          sudo nano /etc/supervisor/conf.d/yourscriptname.conf


                          Enter the config info and save the file:



                          [program:your_script_name]
                          command=python3 your_script_name.py
                          directory=/your/file/location/here
                          autostart=true
                          autorestart=true


                          Update Supervisor to include your new config file



                          supervisorctl reread
                          supervisorctl update


                          See if your service started



                          supervisorctl


                          Start and stop the your script from running



                          supervisorctl stop your_script_name
                          supervisorctl start your_script_name





                          share










                          New contributor




                          AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.








                          share


                          share








                          edited 14 hours ago





















                          New contributor




                          AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.









                          answered 15 hours ago









                          AaronDoesDevAaronDoesDev

                          212




                          212




                          New contributor




                          AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.





                          New contributor





                          AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.






                          AaronDoesDev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Raspberry Pi Stack Exchange!


                              • 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%2fraspberrypi.stackexchange.com%2fquestions%2f96673%2fi-want-to-run-a-python-3-script-on-startup-and-in-an-endless-loop-on-my-raspberr%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

                              VNC viewer RFB protocol error: bad desktop size 0x0I Cannot Type the Key 'd' (lowercase) in VNC Viewer...

                              Couldn't open a raw socket. Error: Permission denied (13) (nmap)Is it possible to run networking commands...

                              Why not use the yoke to control yaw, as well as pitch and roll? Announcing the arrival of...