我使用 runit 来守护我的 Web 应用程序,并且我试图看看我是否可以让我的进程管理sv
而不必有一个对应envdir
的环境变量。我想知道是否可以将这些变量直接传递到我的调用中chpst
。这是run
以下文件/etc/service/myapp
:
#!/bin/sh
exec 2>&1
cd /var/www/myapp
# what it currently looks like
exec chpst -u www-data:www-data /var/www/myapp/myapp
# what I'd ideally like to be able to do
FOO=bar BAZ=qux exec chpst -u www-data:www-data /var/www/myapp/myapp
正如我所提到的,chpst
还提供了一个-e
选项,可以直接将环境变量传递给它,我可以使用它,但为了简单起见,我试图避免它(需要维护的东西更少)。这有可能吗?尖端?
答案1
您可以在调用应用程序之前使用“env”参数传递环境。我已经在单个环境中完成了此操作,但我不确定如何提供多个 envariables
exec chpst -u www-data:www-data env LOGNAME='www-data' /var/www/myapp/myapp
答案2
你能做就是了:
FOO=bar BAZ=qux exec chpst -u www-data:www-data /var/www/myapp/myapp
如果有人知道/bin/sh
这在哪里不起作用,我很想听听它,但是您希望能够执行的这一行将完全按照您希望的方式在我尝试过的每个 shell 上工作。