Perl et rc scripts

Le
xavier
Bonjour,

J'ai un petit problème avec un démon perl que je lance par un startup
script : s'il se lance correctement, se met en arrière plan, et fait
bien son boulot, les commandes status et stop sont inopérantes.

Mon rc-script est basique et conforme au handbook :

8<--
name="leases_survey"
leases_survey_pidfile="/var/run/leases_survey.pid"
rcvar=`set_rcvar`

load_rc_config $name

: ${leases_survey_enable="NO"}
command="/root/bin/leases_survey.pl"
pidfile="/var/run/leases_survey.pid"

run_rc_command "$1"
8<--

Mon code Perl fait les choses proprement :


8<--
daemonize();

open PIDF, '>', $PID_FILE or die "Can't open pid file";
print PIDF $$;
close PIDF;
# Do some stuff
8<--

et j'ai bien dans /var/run/leases_survey.pid le pid du process en
arrière plan. (cat et ps me donnent effectivement la même valeur)

Pourtant, j'ai ça
# /usr/local/etc/rc.d/leases_survey status
leases_survey is not running.

Pareil pour stop

Ca ne serait qu'un détail si mon watchdog ne s'appuyait pas sur ce
mécanisme aussi.

J'ai dû louper quelque chose, mais je ne vois absolument pas quoi

Merci,

--
XAv
Disponible au 01/06/2010
<http://www.xavierhumbert.net/perso/CV2.html>
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
xavier
Le #20847671
Xavier [...]

Bon, le problème est là (bon, d'accord, pas dans le handbook, mais dans
la manpage, pan sur mes doigts) :

command_interpreter="/usr/bin/perl -w"

Avec cette ligne dans le rc-script ça marche.

Ce qui m'a induit en erreur, c'est que spamassassin, qui est aussi un
script Perl, n'annonce pas d'interpréteur dans la sortie de ps, et donc
la fonction _find_process de /etc/rc.subr n'en a pas besoin. En fait, il
réécrit $0 dans sa fonction daemonize...

Du coup mon watchdog peut utiliser sereinement les fonctions de
/etc/rc.subr

--
XAv
Disponible au 01/06/2010
Publicité
Poster une réponse
Anonyme