如何将环境变量传递给systemd启动的服务

时间:2017-07-28 13:34:00

标签: ubuntu environment-variables systemd systemctl

我有一个使用NodeJ构建的nodeJS服务。此服务需要将一些环境变量传递给它。此外,我创建了一个systemd单元文件,从systemctl启动它。出于某些奇怪的原因,当使用systemctl启动时,该服务不会读取环境变量。例如,一个环境变量是HOST,其中包含将要绑定sails应用程序的IP。但是,如果我使用 sails lift 节点app.js 启动服务,它会读取环境变量。 这是单元文件:

np.gradient(np.gradient(y,x),x)

我尝试了一切。我将环境变量添加到/ etc / environment并将单元文件指向它,我还将它们添加到单元文件中,但没有任何效果。

1 个答案:

答案 0 :(得分:10)

这样的东西
[Unit]
Description=project

[Service]
ExecStart=/usr/bin/node /mnt/project/app.js
Restart=always
StandardOutput=syslog
Environment=KEY=VALUE

[Install]
WantedBy=multi-user.target

https://coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html

或者,替代方案如下:

EnvironmentFile=/path/to/env

格式:

KEY=VALUE
KEY2=VALUE

编辑:

对于多个env值

[Unit]
Description=project

[Service]
ExecStart=/usr/bin/node /mnt/project/app.js
Restart=always
StandardOutput=syslog
Environment=KEY=VALUE
Environment=KEY2=VALUE2 KEY3=VALUE3


[Install]
WantedBy=multi-user.target