主管未检测到文件

Supervisor not detecting file

我正在尝试 运行 通过代理执行命令。当我在 shell 中 运行 这个命令有效时

http_proxy=http://username:password@proxy:29800 /home/www/program -env prod

但是当我将它放入我的主管配置时,它告诉我它找不到这个文件

[program:goprogram]
command = http_proxy=http://username:password@proxy:29800 home/www/program -env prod
directory = /home/www/program
enviroment=PATH='/home/www/env/bin:/usr/bin'
user = user
autorestart = true

现在,我认为它与 http_proxy 或语法有关,但不确定如何修复它。

由于您试图在命令本身中设置环境变量,您可以尝试使用不同的方式来调用所述命令:

command = /bin/sh -c 'http_proxy=http://username:password@proxy:29800 home/www/program -env prod'

这样:

  • 您不必将该环境变量添加到环境部分(否则凭据将对所有 supervisord 进程和子进程的环境可见)
  • 你设置http_proxy只是为了要执行的命令。

您需要设置 http_proxy 变量。无论是@VonC 描述的方式还是:

[program:goprogram]
command = home/www/program -env prod
directory = /home/www/program
enviroment=
    PATH='/home/www/env/bin:/usr/bin'
    http_proxy=http://username:password@proxy:29800
user = user
autorestart = true

可以在 this SO question 中找到更多信息。