我用 supervisor 管理大概十多个进程,supervisor 处于启动状态。
新添加了一个进程,这个进程使用的环境变量我放到了/etc/profile.d/
文件夹下,文件名为*.sh
。然后添加 supervisor 配置,启动 supervisorctl,执行,update,新的进程在启动的时候无法读取/etc/profile.d/
下 export 的环境变量,进程启动失败。想来想去不知道什么原因....
但是在 shell 环境下,直接启动进程,是可以读取到这些环境变量的,就是 supervisor 启动进程的时候获取不到...
求大神们解惑....
1
chaegumi 2017-10-25 11:48:29 +08:00
我是直接上 systemd 的,如果在 systemd 中遇到这样的问题,定义一下
[Service] EnvironmentFile= 就解决了。 |
2
defunct9 2017-10-25 17:24:27 +08:00
正常,supervisor 启动的时候是 /etc/init.d,所以环境变量根本没有加载起来。
你在你的启动脚本里加上就可以了 |
3
julyclyde 2017-10-25 17:50:46 +08:00
“无法读取”是你理解有问题
根本就不会去那读取 profile 是给 shell 用的。你这又没用到 shell |
4
Dominator 2017-10-26 00:43:18 +08:00
你可以使用 配置文件里面的关键字 environment 来添加你需要使用的那个 python 来指定你启动的环境变量。同理可以添加别的环境变量信息。
|
5
wq2016 2017-10-30 16:19:00 +08:00
楼主解决了吗?
|
6
goinghugh 2017-11-13 10:02:28 +08:00
在 supervisor 配置文件.conf 中 加上 environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s
参考 https://stackoverflow.com/questions/12900402/supervisor-and-environment-variables |
7
jinsongzhao 2021-02-05 13:18:06 +08:00
@goinghugh %(ENV_PATH)s 最后这个 s 是什么意思?
|