我有一个 java 服务器控制台程序,我已将 xinetd 配置为在给定端口上连接时启动,然后该程序在无限循环中运行,接收来自电话交换机的输入流。
问题是,每次当交换器传来新的数据流块时,xinetd 都会派生出一个新进程。我尝试将 wait 参数设置为 yes,然后重新启动守护进程,但没有成功。
我该如何停止此行为并让守护进程直接将流导向正在运行的进程?我的配置中是否缺少某些内容,还是配置不正确?
我的配置如下:
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 50 10
}
includedir /etc/xinetd.d
然后是我的实际配置,
service aos_larmar
{
socket_type = stream
protocol = tcp
user = root
type = UNLISTED
wait = yes
instances = 256
server = /home/gunnl/java/start.sh
port = 5204
disable = no
}
我的服务器操作系统是
Red Hat Enterprise Linux ES 版本 4(Nahant Update 7)
答案1
xinetd 的工作原理是为每个连接派生一个新进程,进程结束时连接就会关闭。如果您有一个持久进程,那么您应该考虑使用 netcat 之类的东西。