根据网络请求启动服务(套接字激活)

use*_*849 5 networking monitoring tcp udp daemon

我有一个程序在正常激活下侦听某个端口。

我不希望程序连续运行。

是否有一种“快速而肮脏”的方法可以将应用程序包装在 shell 脚本或类似的脚本中,以监控适当的端口,并按需启动服务?

最简单的方法可能会导致连接失败,因为包装器必须释放端口,然后启动应用程序。但是,如果客户端在短时间内再次连接,则一切正常。

但如果这一切对客户完全透明,当然会更好。

Gil*_*il' 6

正如理查德已经提到的,您要寻找的东西已经存在很长时间了。它被称为inetd

有几种 inetd 的实现。有些很简单,只做套接字激活的事情(它们通常只是inetd来自一些包含其他基本网络工具的更大软件包的程序,例如GNU inetutilsBusyBox或已移植到 Linux 的 BSD 工具),有些提供更多功能(xinetd非常流行,rlinetd将自己描述为“功能过于强大”),并且在systemd 中有一个 inetd 的实现(systemd没有实现什么?)。

几乎每个 Unix 系统都带有 inetd 实现。传统上,诸如echo、finger、ftp 等“小”服务使用了inetd,而诸如httpd 和NFS、helper 和ssh 等“大”服务则没有。除非您需要的不仅仅是基本服务,否则请使用您的发行版的默认 inetd 实现。