Há um serviço que já está incluído no Linux e fornece esse recurso, chamado xinetd
. A Red Hat mantém uma boa documentação em seu site, intitulada: 2.6.4. Arquivos de Configuração do xinetd . O serviço xinetd
permite que você configure um serviço mestre que escute em portas específicas e, em seguida, ative outros aplicativos quando as conexões forem feitas nas portas mencionadas.
excerto da página man do xinetd
xinetd performs the same function as inetd: it starts programs that provide Internet services. Instead of having such servers started at system initialization time, and be dormant until a connection request arrives, xinetd is the only daemon process started and it listens on all service ports for the services listed in its configuration file. When a request comes in, xinetd starts the appropriate server. Because of the way it operates, xinetd (as well as inetd) is also referred to as a super-server.
OBSERVAÇÃO: Se não estiver instalado, você pode instalá-lo, o pacote é normalmente chamado de xinetd
.
Uma vez instalado, você coloca os arquivos de configuração sob este diretório, /etc/xinetd.d
. Por exemplo, vamos criar um serviço chamado minecraft
.
# /etc/xinetd.d/minecraft
service minecraft
{
disable = no
type = UNLISTED
socket_type = stream
protocol = tcp
wait = no
server = /path/to/minecraft/server
bind = <ip of minecraft server>
port = 25565
user = root
}
Com o arquivo acima, você pode manualmente iniciar xinetd
para verificar as coisas.
$ sudo service xinetd start
Agora, quando você tentar se conectar ao seu sistema pela porta 25565, o servidor de minecraft deverá iniciar e você deverá ser capaz de acessá-lo. Talvez seja necessário ajustar a linha user = ..
para qualquer usuário que seja o proprietário do servidor.
Para tornar isso persistente, você pode usar qualquer mecanismo usado pela sua distribuição para iniciar os serviços automaticamente durante a inicialização.