我正在尝试使用ps-watcher监视我的系统,并确保给定数量的工作线程正在处理任务。 如果我将工作人员数量硬编码到ps-watcher的configuration文件中,那么效果很好。 不过,我想要从一个名为WORKERS的环境variables中抽取工人的数量。 这似乎很简单,但已被certificate是一个痛苦。
这是一个可用的configuration文件示例:
[myProg] trigger = $count<5 action = /home/ubuntu/startWorkers.sh
我从这个男人那里得到了以下的观察者:
此参数指定启动进程操作的条件。 这个条件是用Perl eval()来评估的,因此应该在Perlexpression式中返回一些等同于“true”的东西。
这使我想我应该使用$ENV{VARIABLE}就像我在Perl中一样。 所以我尝试了以下几点:
[myProg] trigger = $count<$ENV{WORKERS} action = /home/ubuntu/startWorkers.sh
我的ps-watcher日志logging了以下内容:
在(eval 6)第1行(#1)(W uninitialized)中使用未初始化的值连接(。)或string使用未定义的值,就像它已经定义一样。 它被解释为一个“”或一个0,但也许这是一个错误。 为了抑制这个警告,给你的variables分配一个定义的值。 为了帮助你弄清楚什么是未定义的,perl会试着告诉你未定义的variables名(如果有的话)。 在某些情况下,它不能做到这一点,所以它也告诉你什么操作你使用未定义的值。但是,请注意,perl优化您的程序和警告中显示的操作可能不一定真正出现在您的程序。 例如,“那$ foo”通常被优化成“那个”。 $ foo,并且警告将引用并置(。)运算符,即使没有。 在你的程序中。
我有点不知所措 任何帮助,将不胜感激。
我同意单引号的想法,但也仔细检查variables是否通过print "$ENV{'WORKERS'}\n";实际导出print "$ENV{'WORKERS'}\n"; 在eval之前。 也许你不会把这个variables输出给孩子们。
也许单引号环境variables?
$ENV{'WORKERS'};