繁体   English   中英

如何在Linux中将本地conda env中的python脚本转换为systemd服务?

[英]How to convert a python script in a local conda env into systemd service in Linux?

我在运行它的conda环境中有一个守护进程Python脚本:

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环境来获取所有路径。 当可执行文件需要特定的conda env运行时,创建systemd服务的正确方法是什么?

您可以在用户级别而不是系统级别运行systemd服务,它将以root用户身份运行。 无需将.service文件放在/ etc / systemd / system目录中,而是将文件放在〜/ .config / systemd / user /目录中,并且不需要UserGroup派生。 例如:

[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特权或密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM