【问题标题】:Environment variable is not set when running a command in a supervisord script在 supervisord 脚本中运行命令时未设置环境变量
【发布时间】:2016-01-04 16:01:01
【问题描述】:

我的最终目标是让一个脚本始终启动,它每分钟检查一个程序(chromium)是否正在运行,如果它没有运行则启动它。 我正在使用 supervisord 来做到这一点,通过在配置中设置

...
[program:checkproc]
command=/home/pi/scripts/check-proc.sh
autostart=true                
autorestart=true              
environment=DISPLAY=":0"
user=root

要启动的脚本是

#!/bin/bash
while true; do
sleep 60
if pgrep "chromium" > /dev/null
then
    #nothing
    echo "chromium running"
else
    export DISPLAY=:0
    source chromium --noerrdialogs --kiosk http://www.example.com --incognito
fi
done

我遇到的问题是,在启动 chromium 时它失败了,因为没有选择显示,我猜是 DISPLAY 变量没有设置。如您所见,我在配置中正确设置了它(并且只是在命令之前的脚本中尝试)。

我错过了什么?

【问题讨论】:

    标签: linux environment-variables supervisord


    【解决方案1】:

    我想你想用点“.”替换“源”。

    . chromium --noerrdialogs --kiosk http://www.example.com --incognito
    

    (注意点和命令之间的空格)

    添加该点称为“采购”(因此可能是错误?)。它将您的环境变量导出到您正在启动的子进程。

    【讨论】:

    • 已经尝试过,但没有成功。无论如何,“来源”应该等同于“。”用于 bash 外壳。
    猜你喜欢
    • 2013-08-08
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多