我的守护进程通过TCP和UDP发送和接收数据。逻辑连接通常是一组这样的流。
我将创建一个网页来报告这些连接的类型以及已传输的数据量。不能通过调用netstat
来做到这一点,因为很难确定哪个连接是哪个,尤其是UDP可以更改端口。因此,守护进程应该累积统计信息。
我不想将Web服务器放在守护进程中。不想将统计信息不断写入文件。
好主意用于/proc
内核文件系统,其中对该文件系统中的文件的读取调用应用程序中的函数。它按需工作。有这样的东西会很高兴。
是否有任何具有此类要求的现有UNIX / Linux守护程序的示例?他们做了什么?
答案 0 :(得分:0)
我认为/proc
文件通常只定义为读取和设置内核参数,而不是守护进程的参数。
Docker uses a unix socket (usually on /var/run/docker.sock
),它接受HTTP请求并实现REST API。这对您的报表应用程序很方便,但显然是您的守护程序的开销。
您还可以为守护程序创建命名管道,例如在/var/run/myd.info
中,您定期或按要求将您的信息作为文字发送。
SIGPIPE
已经有一个implementation of a named pipe writer没有中断(当另一端停止读取管道时,即发送EOF
时的信号)。
答案 1 :(得分:0)
您可以创建自己的/ proc文件并编写'数据到它。 这是一种常见的方式,我记得SCST允许您使用自己的/ proc / branch来读取甚至控制守护程序资源。
但是您需要使用您的守护程序创建一个内核模块才能使用此功能。
也许sqlite数据库和守护进程上的一些简单API是一个选项吗?