Допустим, написали мы telegram бота на Python, теперь нам нужно чтобы он работал в фоне постоянно.
Можно написать демон для systemd если в вашей операционной системе он используется.
Создаём файл демона:#touch /etc/systemd/system/bot.service
Вставляем туда следующее:
[Unit]
Description=My bot
After=syslog.target
After=network.target
[Service]
Type=idle
ExecStart=/usr/bin/python3 /путь/до/скрипта/bot.py
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target
После этого в консоли выполяем:
#systemctl daemon-reload
#systemctl enable bot
#systemctl start bot
Чтобы остановить бот:sudo systemctl stop bot
Чтобы удалить из автозагрузки:sudo systemctl disable bot
Чтобы проверить работу демона:#systemctl status bot
Чтобы смотреть журнал работы (вывод в консоль) демона:#journalctl -u bot -f -o cat
Запуск Python бота через pm2
pm2 — довольно удобный менеджер процессов, который так-же как systemctl автоматически запускает их при запуске системы и может перезапускать при вылете.
У вас должен быть установлен npm.
Устанавливаем pm2: #npm i -g pm2
И так, для начала на нужно с помощью команды cd, перейти в директорию где расположен главный файл бота.
Затем, выполняем команду:
#pm2 start main.py --interpreter=/usr/local/bin/python3.9 --exp-backoff-restart-delay=100 -n name_bot
main.py — Имя главного файла
/usr/local/bin/python3.9 — Путь до обработчика python
100 — время в миллисекундах до перезапуска после сбоя
name_bot — Название процесса который мы создаем
Посмотреть состояние всех процессов pm2:
#pm2 ls
Посмотреть вывод (логи) конкретного бота (процесса):
#pm2 logs name_bot
Удалить не нужный процесс из pm2:
#pm2 delete name_bot