Eu tive uma situação em que um único script init.d dispara vários processos. Para que o puppet pudesse verificar se o serviço estava em execução, tive que usar grep ps aux para os dois processos.
A declaração de status abaixo de greps ps aux para “foobar” ou “foocat” e canaliza-o para wc -l para obter o número de linhas, que deve ser pelo menos 2. “egrep -v egrep” exclui o processo egrep real, então ele o faz não é contado acidentalmente.
service { ‘foo’:
ensure => running,
enable => true,
hasstatus => false,
# checks both foobar and foocat are running
status => “test `ps aux | egrep ‘foobar|foocat’ | egrep -v egrep | wc -l` -gt 1”,
require => File[‘/etc/init.d/foo’],
}