Solaris
Solaris:偵聽埠的套接字(Linux 上的 /etc/xinetd.d 等效項)
我準備了一個腳本,它接受伺服器埠上的請求,然後處理使用者輸入,通過同一埠提供輸出,然後死掉。該腳本並不總是在執行,而是在客戶端打開某個埠時啟動。我的 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
但是……作為在 Solaris10 上被取消並被 svc 取代的 inetd.d,我怎樣才能創建一個清單來重現相同的行為?
我嘗試搜尋文件,但是當客戶端要求通過伺服器埠進行通信時,我無法找到任何按需啟動的內容。
有誰能夠幫助我?
您首先需要
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