我准备了一个脚本,它接受服务器端口上的请求,然后处理用户输入,通过同一端口提供输出,然后停止。该脚本并非始终运行,但会在客户端打开某个端口时启动。我的 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