J'ai déjà posé cette question plus ou moins auparavant sur stackoverflow et je pensais que c'était résolu (donc accepté la réponse) mais il s'avère que cela n'a pas été résolu. :-(
En termes simples, j’ai écrit un script python qui ne fait que restituer du texte constamment sur stdout, c’est tout ce qu’il fait 24h / 24 et 7j / 7. Je l'ai lié à ce fichier xinetd
service myservice { instances = 1 port = 887 socket_type = stream type = UNLISTED wait = no user = nobody server = /usr/local/bin/myscript.py only_from = 127.0.0.1 192.168.1.2 disable = no max_load = 5.0 nice = 5 per_source = 1 }
Cela fonctionne bien dans la mesure où lorsqu'un client se connecte, il commence à cracher du texte sur sa console. Le problème est que lorsque le client se déconnecte, le processus lancé reste ouvert, bloquant le port. Un seul client est autorisé (instances = 1), mais cela peut se produire lorsque le client redémarre lorsqu'il est connecté.
Auparavant, je pensais que c'était parce que le script python ignorait les signaux d'arrêt (ce qui était le cas), mais avec cette correction, le même comportement est observé. Pour clarifier, kill -1 etc. est maintenant observé avec bonheur par le script python.
Je suppose que c'est un problème de xinetd et assez simple à résoudre?