Как запускать скрипт python как daemon после перезагрузки сервера на Ubuntu?

Есть Скрипт на пайтон - Телеграм бот. Нужно обеспечить его стабильную работу. На данный момент сделал демона с такой конфигурацией:
[Unit]
Description=botname
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/home/user/botDirectory/
ExecStart=/usr/bin/python3 main.py
Restart=on-failure

[Install]
WantedBy=multi-user.target


Работает, вроде как, успешно. Но будет ли этот демон запущен в случае перезагрузки сервера или его нужно будет поднимать вручную? Если вручную, то есть ли вариант автоматически запускать его после перезагрузки?
  • Вопрос задан
  • 874 просмотра
Решения вопроса 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
systemctl unitname enable
systemctl unitname start
systemctl unitname status
Ответ написан
smorman
@smorman
When In Rome do as The Romans do...
Ответ Владимир Коротенко вы отметили, как решение, правда там сразу же указали, что сначала действие, а потом название сервиса.

Я тоже добавлю свои 5 копеек...

Более правильно будет такой порядок комманд:
- от root
1. systemctl daemon-reload
2. systemctl enable --now unitname
или
- от Пользователя
1. sudo systemctl daemon-reload
2. sudo systemctl enable --now unitname

Комманда №1 ОБЯЗАТЕЛЬНА!!! (перечитывание конфигурации юнитов (для применения изменений)), ибо часто без её выполнения вы получите ошибку!!!

Комманда №2 заменяет собой сразу две команды:
systemctl start unitname
systemctl enable unitname

или
sudo systemctl start unitname
sudo systemctl enable unitname


А комманда:
systemctl status unitname
или
sudo systemctl status unitname
показывает текущее состояние сервиса, но если Юнит написан правильно и скрипт проверен и рабочий, то, как правило, необходимости в статусе нет...

Как результат, можно применить (выполнить) всё одной командой сразу:
- от root
systemctl daemon-reload; systemctl enable --now unitname

или
- от Пользователя
sudo systemctl daemon-reload; sudo systemctl enable --now unitname


Можно также вместо Systemd воспользоваться и вполне приличной утилитой Supervisor.
На вкус и цвет, так сказать...

Я успешно пользую обе.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы