在/ etc / profile中声明的环境变量:
export MYNAME=rhel
从monit运行的脚本内容是[/tmp/printmyname.sh]:
echo "My Name is: "$MYNAME >> /var/log/env_variablefile.out
monit的内容:
check file PrintVariable with path /var/log/something.out
start program = "/bin/sh /tmp/printmyname.sh"
if timestamp > 1 minutes then start
我希望在/etc/profile
文件自一分钟后未更新时,将/var/log/env_variablefile.out
中声明的环境变量打印到/var/log/something.out
。
所以我的问题是,当我直接运行/tmp/printmyname.sh
时,它会将My Name is: rhel
追加到/var/log/env_variablefile.out
,但当它从monit运行时,它只打印My Name is:
。
所以我想知道这种行为的原因以及解决问题的方法。
注意:monit每10秒运行一次,上面的代码只是我实际代码的一个例子。
答案 0 :(得分:1)
/etc/profile
仅针对交互式shell执行。
解决此问题的一种方法是将其添加到/tmp/printmyname.sh
的开头:
. /etc/profile
请注意,这可能会导致问题,因为/etc/profile
会尝试设置交互式环境,因此会调用许多您可能不需要的安装脚本。
更好的解决方案可能是将此变量放入新的全局脚本中,并从/etc/profile
和/tmp/printmyname.sh
相关文章: