我试图把我的头围绕在s6pipe理员套件。 我已经想出了运行和日志,但我坚持与s6 envdir,我不知道如何使用它。
我看到环境variables被设置,但我无法访问它。
为了显示:
# According to the docs, set a variable cat /local/s6/services/ping_stdout/env/PING_HOST ya.ru # Make sure there's no such variable in my current env env | grep PING_HOST echo $? 1 # Make sure it gets exported if I use s6-envdir s6-envdir /local/s6/services/ping_stdout/env env | grep PING_HOST PING_HOST=ya.ru # Now try to get it printed s6-envdir /local/s6/services/ping_stdout/env echo "=== ${PING_HOST} ===" === ===
它没有被使用,但是如果我尝试使用已经在我的env中的东西,没有问题:
s6-envdir /local/s6/services/ping_stdout/env echo "=== ${ZSH} ===" === /home/hoodoo/.oh-my-zsh ===
我有什么问题吗?
如何使用s6-envdir设置的variables?
这是正确的forms:
s6-envdir /local/s6/services/ping_stdout/env sh -c 'echo === ${PING_HOST} ==='
你需要启动一个能看到envvariabless6-envdir的子shell。 你也需要单引号,以确保子shell将进行replace和打印variables。
如果你启动一个守护进程,它应该是这样的:
s6-envdir /local/s6/services/ping_stdout/env sh -c 'exec /full/path/to/your/executable'
exec是必要的,所以不会有剩余的额外的shell。 这是确保你直接通过s6发信号的过程。