При использовании телеграмм-бота на сервере, работающим под linux перезапустить упавший скрипт Python, в случае использования bot.polling
, можно при помощи systemd
или supervisor
.
systemd
.Systemd
представляет собой программный комплекс, который содержит набор системных компонентов для операционных систем Linux. Его основная цель - унифицировать конфигурацию и поведение служб в дистрибутивах Linux. Основным компонентом systemd
является "менеджер систем и служб" - система инициализации, используемая для загрузки пользовательского пространства и управления пользовательскими процессами.
Проще говоря, системный менеджер systemd
запустит любой скрипт (в том числе и скрипт Python телеграмм-бота) при старте системы, и будет перезапускать его в случае падения.
Установим системный менеджер systemd
, если отсутствует:
$ apt-get install systemd
Создадим файл bot.service
в директории /etc/systemd/system
с таким содержанием:
$ sudo touch /etc/systemd/system/bot.service
Теперь откроем его
$ sudo nano /etc/systemd/system/bot.service
и вставим следующее содержимое:
[Unit] Description=Telegram bot %name% After=syslog.target After=network.target [Service] Type=simple User=root # замените на свой путь к каталогу, где находится `bot.py` WorkingDirectory=/usr/local/bin/bot # или другой путь # замените на свой путь к телеграмм-боту `bot.py` ExecStart=/usr/bin/python3 /usr/local/bin/bot/bot.py RestartSec=10 Restart=always [Install] WantedBy=multi-user.target
в консоли выполним:
# перечитываем конфигурацию # (обнаружит файл `bot.service`) $ sudo systemctl daemon-reload # подключаем демон `bot.service` $ sudo systemctl enable bot # запускаем демон `bot.service` $ sudo systemctl start bot # смотрим статус демона `bot.service` $ sudo systemctl status bot
ГОТОВО!
Теперь перезапустить/остановить телеграмм-бота можно системными командами Linux:
# перезапуск $ sudo systemctl restart bot # остановка $ sudo systemctl stop bot # запуск после остановки $ sudo systemctl start bot