Bonjour,

J'ai install� le filtre AMaViS pour scanner les virus dans le courrier qui
passe par ma machine Debian 2.2. J'ai �crit un script /etc/init.d/antivirus
qui d�marre amavisd, mais je voudrait le compl�ter pour �tre capable de
l'arr�ter proprement avec une commande "antivirus stop" plut�t qu'un "kill
<amavis pid>".

Le programme amavisd est �crit en Perl, et il fait un fork rapidement pour
rendre la main � la console. Comment puis-je utiliser start-stop-daemon pour
lancer et arr�ter ce programme puisqu'on ne conna�t plus son PID? Ou bien,
comme je ne suis pas un dieu en Perl, quelqu'un peut-il m'aider � modifier
le source Perl pour conserver le PID du daemon dans un fichier
"/var/run/amavis.pid" et d'�tre capable de le tuer ult�rieurement?

Extraits du source amavisd dont je cause:

... Initialisations saut�es...

# detach thyself from the controlling terminal
if ($DEBUG eq "no") {
        my $pid = fork;
        exit if $pid;
        die "Couldn't fork: $!" unless defined($pid);
        setsid();
        chdir("/");
        close(STDIN);
        close(STDOUT);
        close(STDERR);
}

# PME 011115
# Store the PID to be able to kill the AMaViS server
if ($$ != 0) {
        do_storepid($PIDFILENAME, $$);
}

# also need to set up HUP handler to re-read
read_config();

Apr�s diff�rentes fonctions pour attraper certains signaux, il y a une
grande boucle pour �couter sur un socket et faire des forks d'enfants qui
vont scanner avec l'antivirus chaque e-mail re�u.

J'ai essay� d'attraper le PID du premier enfant (puisque le p�re se suicide)
et de le conserver dans un fichier avec la fonction do_storepid(), mais je
ne sais pas comment faire.

Merci

Pierre M�tras


Répondre à