xinetd сохраняет процесс открытым, когда клиент разъединяется

Я задал этот вопрос более или менее прежде на stackoverflow и верил, это, чтобы быть решенным (следовательно принял ответ), но оказывается, что он не был решен.:-(

Проще говоря, я записал сценарий Python, который просто выходной текст постоянно к stdout, это - все, что он делает 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
}

Это хорошо работает в так же как тогда, когда клиент соединяется, это начинает извергать текст на их консоли. Проблема состоит в том, когда клиент разъединяется, запущенный процесс остается открытым, блокируя порт. Существует только один разрешенный клиент (экземпляры = 1), но это может произойти когда клиентские перезагрузки, в то время как соединено.

Ранее я думал, что это было то, потому что сценарий Python игнорировал сигналы уничтожения (которым это было), но с зафиксированным, наблюдается то же поведение. Для разъяснения уничтожьте-1, и т.д. теперь счастливо наблюдается сценарием Python.

Я предполагаю, что это - проблема xinetd и довольно простой зафиксировать?

0
задан 30.08.2013, 00:10

2 ответа

Заставьте серверный процесс выйти, когда он обнаружит разъединение.


Added Когда ОС сервера обнаруживает, что соединение TCP было закрыто, читает в и пишет из stdout/stderr перестанет работать с:

IOError: [Errno 104] Connection reset by peer

Поэтому удостоверьтесь, что Ваш код не игнорирует исключения, когда они происходят.


Однако это (и любой другой метод) будет только работать, когда сервер будет знать о разъединении. Чистые перезагрузки обычно закрывают все соединения TCP, но "отключение" не делает.

1
ответ дан 27.11.2019, 19:15

Вы попытались установить wait = yes?

Согласно документации, которая является

wait — Defines whether the service is single-threaded (yes) or multi-threaded (no).
-1
ответ дан 27.11.2019, 19:15

Теги

Похожие вопросы