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.
On your Pi, create a .service file for your service, for example:
myscript.service
[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
The 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:
man systemctl
or here: https://fedoramagazine.org/what-is-an-init-system/