Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Perl et rc scripts

1 réponse
Avatar
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>

1 réponse

Avatar
xavier
Xavier wrote:
[...]

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
<http://www.xavierhumbert.net/perso/CV2.html>