서버 포트에서 요청을 수락한 다음 사용자 입력을 처리하고 동일한 포트를 통해 출력을 제공한 다음 종료되는 스크립트를 준비했습니다. 스크립트가 항상 실행되는 것은 아니지만 클라이언트가 특정 포트를 열면 시작됩니다. 내 Linux 시스템의 (작동하는) 구성은 다음과 같습니다.
/etc/services
test_socket 9876/tcp # TestSocket
/etc/xinetd.d/test_socket
# default: on
# description: blah blah blah
service test_socket
{
port = 9876
socket_type = stream
protocol = tcp
wait = no
user = root
server = /export/home/stefano/do_something.php
instances = 20
}
클라이언트가 포트 9876을 열면 'do_something.php' 스크립트는 들어오는 메시지를 받아들이고 처리한 후 통신이 종료되기 전에 결과를 출력으로 제공합니다.
위 아키텍처를 Solaris 10 시스템으로 마이그레이션/복제하고 싶습니다.
목적을 위해 동일한 서비스 파일에 동일한 값을 구성했습니다.
/etc/services
test_socket 9876/tcp # TestSocket
그런데... inetd.d가 Solaris10에서 해제되고 svc로 대체되었으므로 동일한 동작을 재현하는 매니페스트를 어떻게 만들 수 있습니까?
문서 검색을 시도했지만 클라이언트가 서버 포트를 통해 통신하도록 요청할 때 요청 시 시작된 항목을 찾을 수 없었습니다.
누구든지 나를 도와줄 수 있나요?
답변1
inetd.conf
먼저 구성을 사용하여 스타일 파일을 생성해야 합니다 . 이는 다음과 같이 매우 간단합니다.
test_socket stream tcp nowait root /export/.../do_something.php do_something.php
그런 다음 해당 명령을 실행하여 해당 서비스 설명을 smf
.
inetconv -i inetd.conf-style-file
가져오지 않고 무엇이 생성될지 먼저 살펴보려면 다음을 실행하세요.
inetconv -n -i inetd.conf-style-file -o /tmp
로 가져온 후에는 smf
다음을 통해 서비스를 관리합니다.inetadm
명령, 예:
inetadm -e svc:/network/test_socket/tcp:default # enable the service
inetadm -d svc:/network/test_socket/tcp:default # disable the service
inetadm -l svc:/network/test_socket/tcp:default # list the service properties