我只想在 Puppet 的进程未运行时使用 exec
exec { "execute me":
onlyif => "pgrep -fc 'ruby execute.rb'",
command => "execute me",
}
因此,在上述情况下,如果进程“ruby execute.rb”已在运行,则 exec 不应运行为
pgrep -fc 'ruby execute.rb' will return 1.
然而
该命令似乎总是在 puppet 中运行。
在我的 Linux 机器上,当我执行 pgrep -fc 'ruby execute.rb' 时,我总是得到一个大于 0 的值。
我的命令有问题吗?
答案1
答案2
您是否尝试过使用完整路径:/usr/bin/pgrep?
也许 puppet 代理无法在 onlyif / except 语句中找到 pgrep 命令。也可以在 exec 资源类型中将命令搜索路径指定为属性路径https://docs.puppet.com/puppet/latest/reference/type.html#exec-attribute-path
exec { "execute me":
onlyif => "pgrep -fc 'ruby execute.rb'",
command => "execute me",
path => "/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin",
}