我遇到一个问题,通过 salt stack 启动的 tomcat 进程获取的环境变量与系统上设置的环境变量不同。这是在 centos 7 服务器上。
下面是我在服务器上运行命令时以及通过 salt 运行命令时获得的区域设置 -v 设置(salt 以 root 身份执行该命令)
locally run:
LANG=en_GB.UTF-8
LC_CTYPE=en_GB.UTF-8
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_GB.UTF-8
LC_MONETARY=en_GB.UTF-8
LC_MESSAGES=en_GB.UTF-8
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_GB.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
LC_ALL=
with salt:
LANG=en_GB.UTF-8
LC_CTYPE=C
LC_NUMERIC=C
LC_TIME=C
LC_COLLATE=C
LC_MONETARY=C
LC_MESSAGES=C
LC_PAPER=C
LC_NAME=C
LC_ADDRESS=C
LC_TELEPHONE=C
LC_MEASUREMENT=C
LC_IDENTIFICATION=C
LC_ALL=
因此,似乎 salt 的设置是错误的,当我查看 salt 进程的 environ 文件时,它具有正确的环境变量。我甚至通过 salt 运行了 sleep 100 命令,这样我就可以查看生成的 salt 进程的环境变量,但它也具有正确的环境设置。我尝试添加具有正确设置的 locale.conf 文件,但与 salt 没什么不同。
这是 locale.conf 文件:
LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL="en_GB.UTF-8"
我可以在我的 tomcat 配置文件中添加导出行来强制正确的变量,但这是解决问题的办法,我真的需要找到 salt 获取其配置的位置来更改它。
我还能在哪里找到 salt 出现这些错误区域设置的原因?我相信这几乎肯定是 salt 的问题。