![Xinetd: 서버 스크립트에서 연결 종료](https://linux55.com/image/113250/Xinetd%3A%20%EC%84%9C%EB%B2%84%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%97%B0%EA%B2%B0%20%EC%A2%85%EB%A3%8C.png)
나는 스크립트인 xinetd 서비스를 가지고 있으며 출력은 원격 호스트의 netcat에 의해 읽혀집니다.
그러나 서버의 스크립트가 종료되면 netcat은 여전히 기다리지만 아무 작업도 수행하지 않습니다. 서버에 대한 연결을 닫거나 "파일 끝" 등을 보내려면 어떻게 해야 합니까?
내 서비스:
service myservice
{
port = 2222
socket_type = stream
protocol = tcp
wait = no
server = /opt/myscript.sh
user = root
disable = no
}
내 스크립트:
#!/bin/sh
##Example:
echo "Hello World!"
네트워크 고양이 출력:
[me@mypc]# nc myhost 2222
Hello World!
*blinking cursor forever*
출력(꼬리) strace nc myhost 2222
:
connect(3, {sa_family=AF_INET6, sin6_port=htons(2222), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
select(4, [3], [3], [3], {tv_sec=10, tv_usec=0}) = 1 (out [3], left {tv_sec=9, tv_usec=999997})
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
select(4, [0 3], [], [], NULL) = 1 (in [3])
recvfrom(3, "Hello World!\n", 8192, 0, 0x████████████, [128->0]) = 13
write(1, "Hello World!\n", 13Hello World!
) = 13
select(4, [0 3], [], [], NULL) = 1 (in [3])
recvfrom(3, "", 8192, 0, 0x████████████, [128->0]) = 0
close(1) = 0
select(3, [0], [], [], NULL
그냥 거기에서 멈 춥니 다. 그런 다음 ^C를 수행해야 마지막 줄이 실제로 다음과 같이 보입니다.
select(3, [0], [], [], NULL^Cstrace: Process 6232 detached
<detached ...>
TCP 덤프:
IP6 localhost.36082 > localhost.myservice: Flags [S], seq 3879998021, win 43690, options [mss 65476,sackOK,TS val 3800136568 ecr 0,nop,wscale 7], length 0
IP6 localhost.myservice > localhost.36082: Flags [S.], seq 3455514626, ack 3879998022, win 43690, options [mss 65476,sackOK,TS val 3800136568 ecr 3800136568,nop,wscale 7], length 0
IP6 localhost.36082 > localhost.myservice: Flags [.], ack 1, win 342, options [nop,nop,TS val 3800136568 ecr 3800136568], length 0
IP6 localhost.myservice > localhost.36082: Flags [P.], seq 1:14, ack 1, win 342, options [nop,nop,TS val 3800136571 ecr 3800136568], length 13
IP6 localhost.36082 > localhost.myservice: Flags [.], ack 14, win 342, options [nop,nop,TS val 3800136571 ecr 3800136571], length 0
IP6 localhost.myservice > localhost.36082: Flags [F.], seq 14, ack 1, win 342, options [nop,nop,TS val 3800136571 ecr 3800136571], length 0
IP6 localhost.36082 > localhost.myservice: Flags [.], ack 15, win 342, options [nop,nop,TS val 3800136612 ecr 3800136571], length 0