Я использую cfengine для запуска процесса foobar. Очевидно, LHS отбрасывается, когда я использую process_select? Могу ли я просто передать LHS функции вместо того, чтобы помещать шаблон соответствия команды в аргумент тела?
Я хотел только совпадать foobar
процессы, принадлежащие конкретному пользователю, поскольку другой пользователь может легко запустить foobar
для тестирования.
bundle agent foobar {
processes:
"foobar" # documented way would be to use .* here
process_select => command("foobar"),
restart_class => start_foobar;
commands:
start_foobar::
"/usr/bin/foobar";
}
body process_select command(c) {
command => "$(c)";
process_result => "command";
}
Насколько мне известно, если вы просто хотите найти процесс "foobar", вам не нужно использовать process_select
особенность вообще.
Разве ты не можешь просто сделать это?
processes:
"foobar"
restart_class => start_foobar;
Если вам также необходимо одновременно соответствовать другим критериям, например, пользователю, запускающему его, как вы предлагаете, я бы рекомендовал либо использовать такую переменную, как:
vars:
"program" string => "foobar";
Или, что еще лучше, написать пакет, который принимает некоторые параметры, примерно так:
bundle agent restart(program, path) {
processes:
"${program}" # documented way would be to use .* here
process_select => command("${program}"),
restart_class => start_foobar;
commands:
start_foobar::
"${path}/${program}";
}
body process_select command(c) {
command => "$(c)";
process_result => "command";
}
А затем просто вызовите этот пакет как restart («foobar», «/ usr / bin»).
Я не тестировал приведенный выше код, возможно, вам придется его настроить!