Merci de ta reponse. quand tu dis page de configuration : celle du plugin ou de jeedom ?
Concernant le plugin DSC j’ai une erreur dans le log DSCnode, c’est d’ailleur la premiere fois, les fois d’avant, nombreuse, il ne disait rien.
0481|throw er; // Unhandled 'error' event
0482|^
0483|Error: listen EADDRINUSE: address already in use 0.0.0.0:4025
0484|at Server.setupListenHandle [as _listen2] (node:net:1751:16)
0485|at listenInCluster (node:net:1799:12)
0486|at doListen (node:net:1948:7)
0487|at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
0488|Emitted 'error' event on Server instance at:
0489|at emitErrorNT (node:net:1778:8)
0490|at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
0491|code: 'EADDRINUSE',
0492|errno: -98,
0493|syscall: 'listen',
0494|address: '0.0.0.0',
0495|port: 4025
0496|}
0497|Node.js v18.17.1
C’est d’ailleur le dernier log car apres ca le demon DSC refuse de s’arrêter ou bien de redémarrer. Donc ce serait bien un problème sur NodeJS
Je continue les investigations et le topic tout seul :
EADDRINUSE semble être une erreur classique npm
En root , la commande
lsof -i : 4025
pour voir qui utilise le port en question
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nodejs 31685 www-data 23u IPv4 70865722 0t0 TCP jeedom.home:50114->envisalink.home:4025 (ESTABLISHED)
nodejs 31685 www-data 24u IPv4 70877201 0t0 TCP *:4025 (LISTEN)
C’est donc le processus 31685 qui représente forcément le demon dsc qui est connecté dessus.
Je le Kill
kill -9 <PID>
je remplace le par celui affiché ( 31685 )
Dans jeedom , le démon apparaît maintenant désactivé. et je peux le lancer à nouveau.
Mes conclusions
Il semblerait qu’un autre processus vienne déranger aléatoirement le plugin DSC sur son nodeJS. NodeJs et son versionning sont d’ailleurs depuis pas mal de temps problématiques pour ce plugin.
Autre soucis, le processus de redémarrage du demon DSC n’est pas complet. et ne fonctionne pas correctement lorsque le process est planté
----EDIT DE FIN------
J’ai testé la fonction arret du Demon DSC et en fin de compte , c’est cette commande qui ne fonctionne pas. que le demon soit planté… ou non .
Après analyse du plugin dsc ( et je ne suis absolument : pas taper svp )
la fonction de reboot du service se trouve ici dans /plugins/dsc/core/class/dsc.class.php
public static function deamon_stop() {
exec('kill $(ps aux | grep "/jeedomdsc.js" | awk \'{print $2}\')');
log::add('dsc', 'info', 'Arrêt du service dsc');
$deamon_info = self::deamon_info();
if (count($deamon_info['launched']) != 0) {
sleep(1);
exec('kill -9 $(ps aux | grep "/jeedomdsc.js" | awk \'{print $2}\')');
}
$deamon_info = self::deamon_info();
if (count($deamon_info['launched']) != 0) {
sleep(1);
exec('sudo kill -9 $(ps aux | grep "/jeedomdsc.js" | awk \'{print $2}\')');
}
}
Il semblerai que j’ai trouvé le probleme.
Le demon DSC refuse de se kill / relancer dans un cas precis.
Lorsque je fais
ps aux | grep "/jeedomdsc.js"
Dans certain cas 2 processus sont listés
root 6261 0.0 0.0 6204 820 pts/0 S+ 14:50 0:00 grep /jeedomdsc.js
www-data 29286 0.2 0.6 609244 54840 ? SNl 14:43 0:00 nodejs /var/www/html/plugins/dsc/resources/jeedomdsc.js http://192.168.1.9/plugins/dsc/core/api/dsc.php?apikey=********APIKEY******** user 192.168.1.15 4025 56 2
Hors, seul le deuxième service , ici PID 29286 correspond au demon DSC
Lors que le premier est present et en premiere position, ( ici 6261 ) alors il est impossible de kill le bon démon via la fonction jeedom.
est ce que cela semble plausible ?