killproc
precisa do caminho completo do arquivo para o programa, e não apenas do nome do programa. Ele pré-forma um tipo de pesquisa de dicionário e corresponde ao caminho completo do programa para o PID para matar.
LSB significa Base de Padrões Linux . Ele foi projetado para ajudar a maximizar a interoperabilidade entre diferentes distros. No entanto, o CentOS ignora o LSB em alguns lugares, especialmente aqui (de acordo com o padrão, /etc/init.d/functions
deve estar localizado em / lib e deve oferecer uma função start-daemon
, entre outras coisas).
Examinando o código-fonte killproc
, parece que, se não houver nenhum arquivo pid especificado, killproc
pesquisará funções no init.d, procurando uma correspondência com o nome do programa especificado. Se não encontrar, cai na declaração if que você rastreou.
Se você olhar o script crond
init (que é muito bem escrito e bem claro sobre o que está acontecendo), ele mostra a invocação apropriada de killproc
#note the full path to script
exec=/usr/sbin/crond
stop() {
if [ $UID -ne 0 ] ; then
echo "User has insufficient privilege."
exit 4
fi
echo -n $"Stopping $prog: "
if [ -n "'pidfileofproc $exec'" ]; then
killproc $exec
RETVAL=3
else
failure $"Stopping $prog"
fi
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
}