In order to have a command or program run when the Pi boots, you can add it as a service. Once this is done, you can start/stop enable/disable from the linux prompt.
Creating a service
On your Pi, create a .service file for your service, for example:
[Unit] Description=My service After=network.target [Service] ExecStart=/usr/bin/python3 -u main.py WorkingDirectory=/home/pi/myscript StandardOutput=inherit StandardError=inherit Restart=always User=pi [Install] WantedBy=multi-user.target
So in this instance, the service would run Python 3 from our working directory
/home/pi/myscript which contains our python program to run
main.py. But you are not limited to Python programs: simply change the ExecStart line to be the command to start any program/script that you want running from booting.
Copy this file into
/etc/systemd/system as root, for example:
sudo cp myscript.service /etc/systemd/system/myscript.service
Once this has been copied, you can attempt to start the service using the following command:
sudo systemctl start myscript.service
Stop it using following command:
sudo systemctl stop myscript.service
When you are happy that this starts and stops your app, you can have it start automatically on reboot by using this command:
sudo systemctl enable myscript.service
systemctl command can also be used to restart the service or disable it from boot up!
Some things to be aware of:
- The order in which things are started is based on their dependencies — this particular script should start fairly late in the boot process, after a network is available (see the After section).
- You can configure different dependencies and orders based on your requirements.
You can get more information from:
or here: https://fedoramagazine.org/what-is-an-init-system/