Supervisord:如何追加到$ PATH


23

我似乎无法弄清楚如何在监督程序配置中附加到默认路径。

我可以重置路径:

environment=PATH="/home/site/environments/master/bin"

但是当我尝试:

environment=PATH="/home/site/environments/master/bin:$PATH"

我看到主管没有评估$PATH

出于某种原因,Google对此并没有太大帮助,我不敢相信我是第一个需要此工具的人。

主管必须对此提供支持,知道这是什么吗?


1
@ascobol nope,我已经硬编码了我需要的路径
Prody 2012年

2
supervisord不要运行shell来预处理配置文件中的变量,因此您不能使用shell表达式来扩展变量。尽管有一个允许这样做的补丁,%($PATH)并且它在2011年的邮件列表中进行了讨论,但AFAIK仍未将其包含在主线源代码树中。作为解决方法,您可以创建一个脚本来设置环境并执行参数中提供的命令。然后,您只需运行supervisord类似的脚本command /usr/local/bin/setup_env_master.sh program_name arguments
Dmitry Vasilyanov

1
外壳包装解决方案有一个很大的缺点-当主管将尝试使用INT或KILL停止进程时,bash脚本将接收该信号,而不是实际的包装程序。这可能导致(在我的情况下)导致悬空过程。
stoiczek 2014年

@stoiczek容易解决的问题。在bash脚本末尾使用exec,不要只是定期运行命令。这样exec server --args。您总是会在新贵工作中看到它。
CameronNemo 2014年

Answers:



1

我查看了文档并同意Dmitry。

当前答案是:主管不执行此目录,但是创建包装器脚本会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.