Как создать unit файл для автозапуска бота

Нашел скрипт, который перезапускает бота в случае падения. Но я не понимаю что нужно указывать в WorkingDirectory и ExecStart. Директорий с ботом находится в учетной записи "my-bot", путь к исполняющему файлу main.py: /home/my-bot/bot/main.py. Файл bot.service с этим скриптом нужно положить в /etc/systemd/system, но под какой учетной записью? root или my-bot ? или это не имеет значения? Я новичок в ubuntu, поэтому буду рад руководству, как сделать скрипт для перезапуска бота.

[Unit]
Description=My Bot
After=syslog.target
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=
ExecStart=
RestartSec=10
Restart=always
 
[Install]
WantedBy=multi-user.target

Ответы (1 шт):

Автор решения: Alexey R.
  • WorkingDirectory можно не указывать, если Ваш сервис не работает с файлами (или работает, но при этом использует абсолютные пути).
  • ExecStart - это команда, которую Вы вводите в командной строке, чтобы запустить бота (нужно указывать полные пути)
  • User - это имя пользователя в системе, от имени которого Вы хотите запустить бота. От этого зависит какие пермиссии будут у бота, а каких не будет. Например некоторый файл, может быть доступен для чтения только пользователю А. Это, значит, что бот, запущенный от имени пользователя Б упадет при попытке обратиться к файлу. Хорошим стилем является подготовка отдельного пользователя для запуска сервисов (с минимальным необходимым набором привилегий). Если Вы будете запускать сервис из под рута, Ваш бот может напортачить в системе.

Подробнее по ключам можно почитать тут.

→ Ссылка