systemd 服务加载 env 环境变量
最近在测试中发现,通过 systemd service 启动的 python 脚本无法加载系统 bashrc 内定义的环境变量。需要在 uint 中定义自定义环境变量才能生效。
首先建立自定义环境变量文件,如: /etc/env_addon
,其中定义需要的环境变量:
ENV1=abcd
ENV2=5678
然后在 unit 的 service 块中加入 EnvironmentFile 指向建立的环境变量文件:
[Unit]
Description=demo
After=network.target nss-lookup.target
[Service]
User=root
EnvironmentFile=/etc/env_addon
ExecStart=/usr/bin/python /path/main.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
重新加载并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart demo.service
如果需要系统的 ~/.bashrc 同时加载这个自定义的环境变量文件,可以在 bashrc 中加入下面内容:
set -a; source /etc/env_addon; set +a
重新加载环境:
source ~/.bashrc
参考链接:
Using a user's .bashrc in a systemd service
Using environment variables in systemd units Environment directive
标签:无