我在运行Python
的环境中有一个守护程序conda
脚本:
source activate my_env
python my_server.py
我想将其转换为systemd
服务,所以我创建了my_server.service文件:
[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
服务的正确方法是什么?
答案 0 :(得分:4)
您可以在用户级别运行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特权或密码。