我的守护进程通过TCP和UDP发送和接收数据。逻辑连接通常是一组这样的流。
我将制作一个网页来报告这些连接的类型以及已传输的数据量。不能仅仅通过调用netstat来做到这一点,因为很难辨别哪个连接是哪个连接,特别是对于可以改变端口的UDP。因此,守护进程应该累积统计信息。
我不想把web服务器放在守护进程中。我不想不断地将统计数据写入文件中。
这个好主意用在/proc内核文件系统中,从该文件系统读取文件会调用应用程序中的函数。它按需工作。如果能有这样的东西就好了。
有没有一些现有的UNIX/Linux守护进程有这样的要求的例子?他们干些什么?
发布于 2016-07-11 15:27:29
我相信/proc文件通常只被定义为读取和设置内核参数,而不是守护进程的参数。
Docker uses a unix socket (usually on /var/run/docker.sock),它接受HTTP请求并实现REST API。这对您的报表应用程序很方便,但对您的守护进程来说显然是一种开销。
您还可以为您的守护进程创建一个命名管道,例如,在/var/run/myd.info中,您可以定期或按需将信息以文本形式发送到该管道。
已经有一个implementation of a named pipe writer在SIGPIPE上没有中断(当另一端停止读取管道时的信号,即当您发送EOF时)。
发布于 2016-07-12 20:49:12
您可以创建自己的/proc文件并向其中“写入”数据。这是一种常见的方式,我记得SCST允许您使用它们自己的/proc/ branch读取甚至控制守护程序资源。
但是你需要用你的守护进程创建一个内核模块来使用这个特性。
也许sqlite数据库和你的守护进程上的一些简单的API是一个选择?
https://stackoverflow.com/questions/38301001
复制相似问题