【问题标题】:How to set the environment variables to be used by the service running on Linux machine如何设置 Linux 机器上运行的服务使用的环境变量
【发布时间】:2020-03-30 21:14:14
【问题描述】:

在 Linux 机器上运行的 my-service 需要提供 ENV_VAR 环境变量。如果我在etc/environment 文件中声明这个变量,它会起作用:

vim /etc/environment 然后添加一个额外的行:

ENV_VAR="My Value"

最后重新加载它:

source /etc/environment

然后我可以重新启动my-service

sudo service my-service stop sudo service my-service start

我想知道是否可以避免在etc/environment 文件中声明ENV_VAR 变量。有没有办法使用任何其他方法声明service 可以看到的环境变量?

【问题讨论】:

  • ENV_VAR="My Value" 添加到my-service 或此服务包含的文件中。
  • 请澄清。或者更好的是,将其作为答案发布,以便我们对其进行投票。
  • 你的问题更适合Unix & Linux Stack Exchange
  • 你运行的是什么发行版? sudo service my-service stop 建议您不要使用 systemd。您使用的是哪个服务管理器(rc-init、systemd、sysvinit、upstart 等)?
  • Ubuntu DISTRIB_RELEASE=16.04。它确实带有systemctl。而不是sudo service my-service start 我可以用sudo systemctl start my-service 启动它有没有办法使用命令行设置环境变量(不会弄乱my-service.conf 文件?

标签: linux bash devops


【解决方案1】:

所以如果你想添加一个环境变量你可以做很多事情:

  1. 编辑/etc/enviroment(所有用户)
  2. 编辑/etc/profile(所有用户)
  3. 编辑~/.bashrc(只有你)

编辑上述任何文件将确保在您启动计算机时,您的环境将有权访问这些变量。

您还可以编辑my-servicemy-service 包含的文件(如Cyrus 所建议的那样)。这意味着,如果您对my-service 程序的源代码或my-service 包含的文件(在它自己执行之前调用)具有写入权限,则可以在该文件中添加一行。

您甚至不必编辑文件!每当您启动终端时,您只需输入您将作为命令添加到上述文件之一的文本即可对环境进行实时更改。此环境更改将与 ~/.bashrc 更改一样,因为它仅适用于当前用户。如果你打算sudo <command>,你就得先sudo su切换成超级用户,然后再换环境。

天气你正在编辑文件或输入命令,我建议使用以下代码行。 export 命令将确保my-service 可以访问环境变量。

export ENV_VAR=value

Related question

【讨论】:

  • 感谢您的回答!但是使用export ENV_VAR=value 在终端中设置环境变量,然后使用sudo service my-service start 启动服务不会使ENV_VAR 对服务可用。
  • 我应该提到用户帐户差异。当您执行sudo <command> 时,它将以超级用户身份完成命令。您必须切换到超级用户帐户sudo su,然后是export ENV_VAR=value,然后是service my-service start。我将编辑我的解决方案以反映这一点
【解决方案2】:

有没有办法使用任何其他方法来声明服务可以看到的环境变量?

如果您的系统使用 systemd 来管理服务,您可以从systemd.exec documentation“环境”部分添加到您的服务文件中:

Environment="ENV_VAR=My Value"

【讨论】:

  • 不,那是错误的。服务的环境不应依赖于运行它的环境。如果您想将参数传递给您的服务,只需创建一个模板服务 (my_service@argument.service)。或者我想作为一种解决方法,您可以使用自定义配置创建一个插入式 systemd 服务文件,我已经看到了这样做的脚本。
猜你喜欢
  • 2012-10-05
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2012-11-26
  • 2017-10-09
  • 2015-09-07
相关资源
最近更新 更多