如何将本地 conda 环境中的 python 脚本转换为 Linux 中的 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 服务而不是 运行 系统级别的 ning,这将 运行 它作为 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
命令以 运行ning 用户权限启动此服务,而不是使用特权权限启动此服务。无需 sudo 权限或密码。
我的 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 服务而不是 运行 系统级别的 ning,这将 运行 它作为 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
命令以 运行ning 用户权限启动此服务,而不是使用特权权限启动此服务。无需 sudo 权限或密码。