Solaris

Solaris:偵聽埠的套接字(Linux 上的 /etc/xinetd.d 等效項)

  • September 30, 2015

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

引用自:https://serverfault.com/questions/725781