Olhando a fonte para check_procs, o comportamento que você está vendo é por design. Ou melhor, o comportamento depende inteiramente do comportamento da implementação ps
. (Se funciona no seu sistema RHEL, isso é quase certamente uma feliz coincidência.)
O plugin deve usar ps
(em vez de cavar em / proc) para permitir que ele seja executado em sistemas sem / proc (por exemplo, não-Linux).
Depois de extrair a saída ps
, o plug-in chamará strstr
para ver se o estado do processo está contido em seu argumento da linha de comandos para -s . Então, no seu exemplo, está verificando se "Ssl" é uma substring de "S".
Pode parecer que isso é uma lógica inversa, por exemplo, que ele deve estar verificando se seu argumento "S" é uma subseqüência de "Ssl", mas acredito que a intenção é fornecer vários estados do processo como um argumento para -s.
Por exemplo, você pode fazer isso:
check_procs -C rsyslogd -w 1:3 -c 1:5 -s S,Ssl,Sl
PROCS OK: 1 process with command name 'rsyslogd', STATE = S,Ssl,Sl
As vírgulas são apenas para torná-lo mais legível; o plugin efetivamente os ignora.