linux - 在 supervisord 脚本中运行命令时未设置环境变量

标签 linux environment-variables supervisord

我的最终目标是让脚本始终处于运行状态,它每分钟检查一次程序 (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 变量。如您所见,我在配置中正确设置了它(并且只是为了在命令之前的脚本中也进行尝试)。

我错过了什么?

最佳答案

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

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

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

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

关于linux - 在 supervisord 脚本中运行命令时未设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34595035/

相关文章:

linux - "read"命令在 bash 中不弹出输入窗口(在没有终端的情况下运行)

linux - 仅在指定进行调试时才添加 -pg

laravel - Laravel .env 文件中的特殊字符

windows - Strawberry Perl 是 %ENV 一个普通的对象

path - Windows 10如何添加文件夹到 `Path`环境变量(附截图)

amazon-ec2 - 无法在 ec2 实例中安装 Supervisor 作为 ASP .Net Core 项目的服务管理器

linux - Ubuntu:你怎么称呼基本目录?

python - 如何使用 python 通过另一个脚本运行一个文件中的列表

代理背后的 Docker Centos 7 easy_install supervisor ssl 问题

Supervisord - 程序编号作为参数