Bonjour,
Après avoir fais quelques tests et recherches sur le serveur, je me suis aperçu que le script d'init de l'agent fonctionnait mal (du moins, sur notre serveur). Même si je doute qu'il y ai un quelconque rapport avec mon autre problème, je tenais à le signaler, pour savoir si c'était un cas isolé par exemple
Voici ce qu'il se passait (de mémoire, j'ai modifié le script pour que le tout fonctionne correctement)
# /etc/init.d/fusioninventory start
--> le daemon se lance et apparait bien dans la liste des processus
# /etc/init.d/fusioninventory statut
--> indique que le daemon n'est pas lancé : failed
# /etc/init.d/fusioninventory stop
--> après cette commande, le daemon apparaissait toujours dans la liste des processus, je devais le killer pour l'arréter
Voici une partie du code original du script:
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/var/run/$NAME.pid --exec $DAEMON || true
sleep 1
start-stop-daemon --start --quiet --pidfile \
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
status)
status_of_proc -p /var/run/$NAME.pid "$DAEMON" fusioninventory-agent && exit 0 || exit $?
;;
*)
echo "Usage: $NAME {start|stop|restart|status}" >&2
exit 1
;;
On voit qu'un fichier .pid devait être créé dans /var/run/ et devais contenir le PID du process. Cependant, ce fichier n'apparaissait pas dans le répertoire.
après un passage dans le manuel de start-stop-daemon, j'ai essayé de rajouter l'option -m dans la commande la commande d'exécution, afin de l'obliger à créer le fichier. Par la suite, un PID était bien stocké dans le fichier fusioninventory.pid, mais il ne correspondait pas au pid du process... (en général, le numéro du pid stocké était très proche du bon pid, 5000 à la place de 5002 par ex.)
Je me suis alors lancé dans la réécriture complète des fonctions start, stop, restart et status, voici le résultat:
#CONSTANTES
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/fusioninventory-agent
DAEMON_OPTS="-d --ca-cert-file=cert (chemin absolu) --no-ssl-check"
NAME=fusioninventory-agent
DESC=fusioninventory-agent
PID=/var/run/fusioninventory-agent.pid
[...]
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile -m $PID --exec $DAEMON -- $DAEMON_OPTS
touch $PID
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
pgrep fusioninventory > $PID
start-stop-daemon --stop --quiet --pidfile $PID
rm $PID
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
pgrep fusioninventory > /var/run/fusioninventory-agent.pid
start-stop-daemon --stop --quiet --pidfile $PID
sleep 1
start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
status)
if [ -e $PID ]
then
echo "Usage: $NAME started"
else
echo "Usage $NAME stopped"
fi
# status_of_proc -p /var/run/$NAME.pid "$DAEMON" fusioninventory-agent && exit 0 || exit $?
;;
*)
echo "Usage: $NAME {start|stop|restart|status}" >&2
exit 1
;;
esac
Savez vous si il s'agit d'un cas isolé ou bien d'autres ont-ils rencontrés le même problème?
Cordialement,
Anthony