Question – How to autorun a Python script using systemd. How to create own systemd service using Python script. How to configure Python script to start as systemd. How to manage Python service with systemctl?
Use this tutorial to run your Python script as system service under systemd. You can easily start, stop or restart your script using systemctl command. This will also enable to autorun Python script on system startup.
Step 1 – Dummy Python Application
First of all, I have used a dummy Python script which listens on a specified port. Edit a Python file as following
$ sudo vi /usr/bin/dummy_service.py
and add following content for dummy, You can use your own Python script as per requirements.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn, addr = s.accept()
data = conn.recv(1024)
Step 2 – Create Service File
Now, create a service file for the systemd as following. The file must have .service extension under /lib/systemd/system/ directory
$ sudo vi /lib/systemd/system/dummy.service
and add the following content in it. Change Python script filename ad location. Also update the Description.
[Unit] Description=Dummy Service After=multi-user.target [email protected] [Service] Type=simple ExecStart=/usr/bin/python3 /usr/bin/dummy_service.py StandardInput=tty-force [Install] WantedBy=multi-user.target
Step 3 – Enable Newly Added Service
Your system service has been added to your service. Let’s reload the systemctl daemon to read new file. You need to reload this deamon each time after making any changes in in .service file.
$ sudo systemctl daemon-reload
Now enable the service to start on system boot, also start the service using the following commands.
$ sudo systemctl enable dummy.service $ sudo systemctl start dummy.service
Step 4 – Start/Start/Status new Service
Finally check the status of your service as following command.
$ sudo systemctl status dummy.service
Use below commands to stop, start and restart your service manually.
$ sudo systemctl stop dummy.service
#To stop running service$ sudo systemctl start dummy.service #To start running service$ sudo systemctl restart dummy.service #To restart running service