主管设置环境变量并收到错误:键/值对意外结束

主管设置环境变量并收到错误:键/值对意外结束

各位朋友,

我正在尝试将某些东西移到 docker 容器中,这意味着将其从作为守护进程运行转变为由 Supervisord 控制的独立进程。现在我对 Supervisord 不太熟悉,所以这可能是我的一个简单配置错误。

问题源于此应用程序需要设置某些环境变量。当作为守护进程运行时,我会通过 bash 脚本设置它们

#!/bin/bash
ORACLE_HOME=/home/oracle/app/
TNS_ADMIN=/home/oracle/app/network/admin
export ORACLE_HOME TNS_ADMIN
export LD_LIBRARY_PATH=$PATH:/home/oracle/app/lib
ncftpd_authd

在supervisord.conf中我将其设置为

[program:authd]
environment=ORACLE_HOME="/home/oracle/app/",TNS_ADMIN="/home/oracle/app/network/admin",export ORACLE_HOME TNS_ADMIN,export LD_LIBRARY_PATH="$PATH:/home/oracle/app/lib"
command=/usr/local/sbin/ncftpd_authd
stdout_events_enabled=true
stderr_events_enabled=true

但是如果我调用supervisord -c /etc/supervisord.conf 我得到一个错误

[root@0d7f9a5d7c3a src]# supervisord -c /etc/supervisord.conf 
Error: Unexpected end of key/value pairs

我相信这与环境行有关,就好像我注释说我们的supervisord将启动(但authd不会运行)。我在supervisord conf文件中设置环境时做错了什么?

答案1

environment应为键/值对列表,这意味着它不应包含export。正确的值应为:

environment=ORACLE_HOME="/home/oracle/app/",TNS_ADMIN="/home/oracle/app/network/admin",LD_LIBRARY_PATH="$PATH:/home/oracle/app/lib"

您可能还需要用$PATH其值替换。或者,您可以遵循从外向内编写变量的标准http://supervisord.org/configuration.html?highlight=environment。简而言之,要使用$PATH,只需写入%(ENV_PATH)s。然后,它将是这样的:

environment=ORACLE_HOME="/home/oracle/app/",TNS_ADMIN="/home/oracle/app/network/admin",LD_LIBRARY_PATH="%(ENV_PATH)s:/home/oracle/app/lib"

相关内容