Skip to content

How to run a Python program as Linux Service

Create Python program

$ sudo vi /usr/bin/
import time
import logging

logging.basicConfig(level=logging.INFO, filename='/var/log/test-py.log', 
    filemode='a', format='%(asctime)s:%(name)s:%(levelname)s:%(message)s', 
    datefmt='%d-%b-%y %H:%M:%S')

step = 0
while True:
  step += 1"Processing step {step}.")

Create Service Definition

$ sudo vi /lib/systemd/system/test-py.service
Description=Test Service

ExecStart=python3 /home/root/ >> /var/log/test-py.log


Enable and Start the Service

First you need to reload the systemctl daemon to read the new service definition.

$ sudo systemctl daemon-reload

In case you update the service definition, you need to reload the systemctl daemon for updates to take effect.

Now you can enable and start the service:

$ sudo systemctl enable test-py.service
$ sudo systemctl start test-py.service

You can monitor the log:

$ sudo tail -f /var/log/test-py.log
03-Jun-21 16:43:52:root:INFO:Processing step 1.
03-Jun-21 16:43:54:root:INFO:Processing step 2.
03-Jun-21 16:43:56:root:INFO:Processing step 3.
03-Jun-21 16:43:58:root:INFO:Processing step 4.

Manage the Service

You can start, stop, restart the service or get the service status:

$ sudo systemctl start test-py.service
$ sudo systemctl status test-py.service
$ sudo systemctl restart test-py.service
$ sudo systemctl stop test-py.service