Как преобразовать скрипт Python в локальной среде conda в службу systemd в Linux? - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть сценарий демона Python в моей среде conda, в котором я его запускаю:

source activate my_env
python my_server.py 

Я хотел бы преобразовать его в службу systemd, поэтому я создал my_server.servicefile:

[Service]
User=myuser
Group=myuser
Type=simple
ExecStart=/home/myuser/.conda/envs/my_env/bin/python /path/to/my_server.py

Это не работает, потому что systemd запускается от имени пользователя root, и я не могу активировать среду conda для получения правильного пути.Как правильно создать службу systemd, если для запуска исполняемого файла требуется определенный conda env?

1 Ответ

0 голосов
/ 26 декабря 2018

Вы можете запускать сервисы systemd на уровне пользователя, а не на уровне системы, который будет запускать его как пользователь root.Вместо того, чтобы помещать файл .service в каталог / etc / systemd / system, вы помещаете файл в каталог ~ / .config / systemd / user /, и вам не нужны производные User и Group.Например:

[Unit]
Description=Description
After=network.target

[Service]
Type=simple
WorkingDirectory=/path/to/
ExecStart=/home/myuser/.conda/envs/my_env/bin/python my_server.py

[Install]
WantedBy=default.target

Вместо того, чтобы запускать эту службу с привилегированным разрешением, вы можете начать с разрешения запущенного пользователя с помощью команды systemctl --user start/restart/stop servicename.Нет необходимости в привилегии sudo или пароле.

...