xinetd를 설치하고 스크립트를 작성했습니다.
#!/bin/bash
echo "Some text"
touch /home/somefile
아래 서비스 구성이 있으며 /etc/xinetd.d/
기본적으로 구성된 포트에서 localhost에 연결할 때 작동합니다. 그 이유는 다음과 같습니다. somefile
서비스에 연결할 때 touch 명령으로 파일이 생성됩니다. 텔넷을 사용하여 연결합니다.
telnet localhost someport
내가 이해하지 못하는 것은 텔넷이 "Some text"라는 문자열을 출력하지 않는다는 것입니다. 이 작업을 수행하려면 어떻게 해야 합니까?
이것은 /etc/xinetd.d/에 있는 xinetd 서비스 구성 파일입니다:
# This is the configuration for the tcp/stream echo service.
service my_service_name #not in /etc/services
{
# This is for quick on or off of the service
disable = no
# The next attributes are mandatory for all services
id = my_custom_id
type = UNLISTED
wait = yes
socket_type = stream
protocol = tcp
# External services must fill out the following
user = root
# group =
server = /usr/bin/program_name_here
# server_args =
# External services not listed in /etc/services must fill out the next one
port = 60001
}
답변1
wait
로 변경하면 no
문제가 해결될 수 있습니다. 매뉴얼 페이지에서:
값이 yes이면 서비스는 단일 스레드입니다. 이는 xinetd가 서버를 시작한 다음 서버가 종료되고 서버 소프트웨어가 연결을 수락할 때까지 서비스 요청 처리를 중지한다는 의미입니다.
중요한 점은 wait가 yes로 설정된 경우 서버 소프트웨어가 연결을 수락해야 하지만 스크립트는 그렇게 하지 않는다는 것입니다.