Як запустити Python програму як системний сервіс на Ubuntu 22

Як запустити Python програму як системний сервіс на Ubuntu 22

3 Березня 2024 в 20:23 49

Ця стаття ставить за мету пояснити, як запустити Python програму як системний сервіс на операційній системі Ubuntu 22. Вона розглядає конкретний випадок використання, де необхідно вести моніторинг стану Docker контейнерів та надсилати повідомлення через Telegram про їхній стан.

Для початку, ми маємо Python скрипт, який використовує бібліотеки subprocess, requests та time для взаємодії з системою та зовнішніми сервісами. Скрипт моніторить стан Docker контейнерів і, якщо вони стають недоступними, надсилає повідомлення про це через Telegram.

Для того щоб скрипт працював постійно та автоматично запускався після перезавантаження сервера, ми створюємо файл конфігурації .service в директорії /etc/systemd/system. У цьому файлі визначаються параметри сервісу, такі як користувач, група, тип сервісу, команда для запуску, а також умови перезапуску. Після змін у файлі конфігурації, необхідно виконати команди sudo systemctl daemon-reload, sudo systemctl enable bot.service та sudo systemctl start bot.service для внесення змін та запуску сервісу.

Хоча команда sudo systemctl status bot.service показувала, що сервіс працює, автор не отримував повідомлень. Однак, коли він запускав скрипт в консолі, все працювало належним чином.

Очевидно, що проблема полягала у некоректному налаштуванні .service файлу. Перевірте шлях до виконуваного файлу (ExecStart) та переконайтеся, що шлях до Python виконуваного файлу правильний. Крім того, впевніться, що права доступу до файлів та каталогів налаштовані вірно, особливо у випадку, якщо скрипт вимагає доступу до конкретних ресурсів або служб.

Після внесення відповідних змін у .service файл, перезавантажте сервіс та перевірте його статус. Він повинен працювати належним чином та надсилати повідомлення через Telegram згідно з очікуваним поведінкою.