Назад | Перейти на главную страницу

вызов переменной окружения в файле конфигурации ps-watcher

Я пытаюсь использовать пс-наблюдатель чтобы контролировать мою систему и убедиться, что заданное количество рабочих потоков работает над задачей. Если я жестко запрограммирую количество рабочих в конфигурационном файле для ps-watcher, он отлично работает. Однако я бы хотел, чтобы количество рабочих процессов было извлечено из переменной среды с именем WORKERS. Это кажется простым, но оказалось проблемой.

Вот пример работающего файла конфигурации:

[myProg]
  trigger = $count<5
  action = /home/ubuntu/startWorkers.sh

Я вытащил от человека для ps-watcher следующее:

Этот параметр указывает условие, при котором запускается действие процесса. Условие оценивается с помощью Perl eval () и, следовательно, должно возвращать что-то, что эквивалентно `` истине '' в выражении Perl.

Это заставляет меня думать, что я должен использовать $ENV{VARIABLE} как и в Perl. Итак, я попробовал следующее:

[myProg]
  trigger = $count<$ENV{WORKERS}
  action = /home/ubuntu/startWorkers.sh

в который мой журнал ps-watcher записал следующее:

Использование неинициализированного значения в конкатенации (.) Или строки в (eval 6) строке 1 (# 1) (W неинициализировано) Неопределенное значение использовалось, как если бы оно уже было определено. Это было интерпретировано как «» или 0, но, возможно, это была ошибка. Чтобы подавить это предупреждение, присвойте переменным определенное значение. Чтобы помочь вам выяснить, что было неопределенным, perl попытается сообщить вам имя переменной (если есть), которая не была определена. В некоторых случаях он не может этого сделать, поэтому он также сообщает вам, в какой операции вы использовали неопределенное значение. Обратите внимание, однако, что perl оптимизирует вашу программу, и операция, отображаемая в предупреждении, не обязательно может буквально отображаться в вашей программе. Например, «that $ foo» обычно оптимизируется в «that». $ foo, и предупреждение будет относиться к оператору конкатенации (.), даже если его нет. в вашей программе.

Я немного растерялся. Любая помощь будет оценена.

Может быть, одинарные кавычки вокруг переменной окружения?

$ENV{'WORKERS'}; 

Я согласен с идеей одинарной кавычки, но также дважды проверяю, действительно ли переменная экспортируется, выполнив print "$ENV{'WORKERS'}\n"; перед eval. Возможно, вы не экспортируете переменную в дочерние элементы.