Как установить в автозапуск python-скрипт используя systemd

Иногда требуется какой-то скрипт или программу запускать как системный сервис. Это можно легко провернуть, если в вашем дистрибутиве используется система инициализации и управления демонами — systemd.

Для примера, я создам простейший python-скрипт который будет слушать 9988 порт и добавлю его в автозагрузку при старте операционной системы.

1. Простой python-scrypt

sudo nano /usr/bin/dummy_service.py

Код скрипта:

#!/usr/bin/python3
 
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 9988))
s.listen(1)
 
while True:
    conn, addr = s.accept()
    data = conn.recv(1024)
    conn.close()
    my_function_that_handles_data(data)

2. Создание файла сервиса.

Теперь создадим файл сервиса для с помощью которого расскажем systemd что нам требуется. Файл должен иметь расширение .service и находиться в директории /lib/systemd/system/

sudo nano /lib/systemd/system/dummy.service

Добавим информацию о нашем сервисе (можете изменить местоположение скрипта и описание сервиса):

[Unit]
Description=Dummy Service
After=multi-user.target
Conflicts=getty@tty1.service

[Service]
Type=simple
ExecStart=/usr/bin/python3 /usr/bin/dummy_service.py
StandardInput=tty-force

[Install]
WantedBy=multi-user.target

Мне кажется из содержимого всё и так понятно — какая строка и за что отвечает.

3. Включение нового добавленного сервиса.

Вы добавили, наконец-то, ваш сервис в систему. теперь необходимо перезапустить демон systemctl чтобы он прочел новый файл. Каждый раз как вы вносите изменения в .service файлы вам нужно перезапустить демон.

sudo systemctl daemon-reload

Теперь включим запуск сервиса при загрузке системы, и запустим сам сервис.

sudo systemctl enable dummy.service
sudo systemctl start  dummy.service

4. Запуск/Остановка/Статус сервиса

В конце проверим статус нашего нового сервиса:

sudo systemctl status dummy.service

Проверим что наш python-скрипт слушает нужный нам порт:

sudo lsof -i | grep 9988

Команды для запуска, остановки и перезапуска сервиса:

sudo systemctl stop dummy.service          #Для остановки сервиса 
sudo systemctl start dummy.service         #Для запуска сервиса
sudo systemctl restart dummy.service       #Для перезапуска сервиса

 

Mirivlad

Скромный труженик консоли и окошек.

Share
Published by
Mirivlad

Recent Posts

Как вернуть доступ к аккаунту VK (ВКонтакте)?

Восстановить доступ к странице ВКонтакте можно относительно просто. И для этого даже не потребуется помощь…

1 год ago

Реверс-инжиниринг электроники и ПО

Реверс инжиниринг электроники и программного обеспечения — увлекательная и важная дисциплина, играющая ключевую роль в…

3 года ago

Что лучше Apple iPhone 14 или iPhone 13: сравниваем модели

Рынок смартфонов не стоит на месте и каждый год пополняется новыми моделями. Компания Apple традиционно…

3 года ago

Как открыть интернет-магазин с нуля в 2026 году?

Запуск онлайн-бизнеса может показаться сложной задачей, но на самом деле этот процесс можно существенно упростить,…

3 года ago

Как проверить текст на уникальность?

Если Вы хотите продвинуть свой сайт в поисковых системах, одним из самых важных аспектов является…

3 года ago

ТОП лучших смартфонов Samsung 2026 года: рейтинг по цене и качеству

Корейская компания Samsung зарекомендовала себя на потребительском рынке как производитель флагманов, так и бюджетных смартфонов.…

3 года ago