我正在使用cfengine来启动foobar进程。 显然,当我使用process_select时,LHS被丢弃了? 我可以简单地将LHS传递给函数,而不必将命令匹配模式放在主体参数中?
我只想匹配属于特定用户的foobar进程,因为另一个用户可以很容易地运行foobar进行testing。
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_selectfunction。
你不能这样做吗?
processes: "foobar" restart_class => start_foobar;
如果您还需要同时匹配其他条件,例如用户按照您的build议运行它,我会build议使用像这样的variables:
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"; }
然后把这个捆绑包重新启动(“foobar”,“/ usr / bin”)。
我没有testing过上面的代码,你可能需要调整它!