CentOS 5.9 | Programa de escuta na porta, fazendo com que ela não atinja

0

Eu tenho um servidor de jogo rodando na minha caixa CentOS que se liga à porta 28960, agora quando eu reiniciei o servidor do jogo ele afirmou que não pode ligar a porta porque está em uso, mas obviamente porque o servidor foi reiniciado, mas o porto não estava fechado? Como faço para verificar se o programa está escutando, e se não estiver, então como eu limparia a porta, para que eu possa fazer o backup do servidor na porta 28960?

    
por user31186 25.01.2013 / 23:09

2 respostas

2

Acho que você pode estar se deparando com o problema 2 * MSL . Veja como você diz:

$ netstat -na | grep 28960.*TIME_WAIT

Se você obtiver algo a partir disso, significa que a pilha de rede do kernel está aguardando duas vezes a vida útil máxima do segmento (MSL) para que os pacotes dispersos façam uma aparição antes de permitir que essa porta seja recolocada. O estado TIME_WAIT é uma coisa boa.

Servidores que devem ser reiniciados na operação normal desabilitam o TIME_WAIT handling definindo a opção SO_REUSEADDR socket . Se você pesquisar os documentos do seu servidor de jogos, pode ser que haja uma opção que permita ativar esse comportamento.

Se não, e você não pode obter a fonte para modificar o servidor do jogo, sua única opção é aguardar que os TIME_WAIT estados expirem, o que normalmente leva entre 30 e 120 segundos.

Aqui está um script que eu chamo de showwait , que é útil com esse tipo de coisa:

#!/bin/sh
while [ true ]
do
    netstat -na | grep WAIT
    sleep 1
done

Você acabou de executá-lo e esperar que ele pare de colocar linhas a cada segundo. Então você Ctrl-C e seguir em frente com o que você precisa para fazer isso requer que não haja estados de espera.

Este script não é adequado para uso em um servidor ocupado, onde há estados de espera acontecendo o tempo todo, mas quando você está apenas esperando por um servidor com nada mais acontecendo para atingir quiescência, é perfeito. / p>     

por 26.01.2013 / 01:57
0

Você poderia tentar lsof(8) (verificar a página de manual, é bastante extensa; mas apenas enviar sua saída para grep 28960 deve dar uma idéia do que está acontecendo). Em qualquer caso, a porta 28960 não é atribuída por IANA . então nada deveria estar usando isso.

    
por 25.01.2013 / 23:32

Tags