我準備了一個腳本,它接受伺服器連接埠上的請求,然後處理使用者輸入,透過同一連接埠提供輸出,然後終止。該腳本並不總是運行,而是在客戶端打開某個連接埠時啟動。我的 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