Я задавал этот вопрос более или менее ранее на stackoverflow и считал, что он решен (поэтому принял ответ), но оказывается, что он не был решен. :-(
Проще говоря, я написал скрипт на python, который просто выводит текст постоянно на стандартный вывод, вот и все, что он делает 24/7. Я связал его с этим файлом 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 }
Это прекрасно работает, так как когда клиент подключается, он начинает извергать текст на своей консоли. Проблема в том, что когда клиент отключается, запущенный процесс остается открытым, блокируя порт. Разрешен только один клиент (instances = 1), но это может произойти, когда клиент перезагружается при подключении.
Ранее я думал, что это потому, что скрипт python игнорировал сигналы уничтожения (что было), но с этим исправлено, наблюдается то же поведение. Чтобы уточнить, сценарий python радостно наблюдает за kill -1 и т.д.
Я предполагаю, что это проблема xinetd, и ее довольно просто исправить?