动态监控程序状态

dynamically monitor program status

本文关键字:程序状态 监控 动态      更新时间:2023-10-16

在Unix系统中,可以通过从/proc读取数据来动态监视系统。我希望在我的应用程序中实现这种监控,通过动态地将"当前状态"保存到一个文件中。但是,我不希望我的程序IO延迟,所以最好将文件设置为虚拟的,即不存储在磁盘中,而是实际存储在内存中。有办法指出这一点吗?谢谢你的提示!

为什么不使用共享内存和信号量?以"man shmget"为起点

作为另一种选择,您可以使应用程序成为套接字服务器。通过这种方式,您可以让它仅在被请求时才响应状态信息(甚至不需要用当前状态更新内存区域),并且您还可以从远程机器控制程序。如果状态本身的数据量不是很大,我认为这是最灵活的解决方案。

如果你也让你的应用程序响应一个HTTP请求(我不是说处理所有的HTTP协议的可能性,只是你想要支持的请求),那么你也可以避免编写客户端,如果你想写它,它可能更容易找到库和程序员能够做到这一点。

让它监听端口80,你可以检查你的程序在互联网上通过防火墙没有努力:-)(嗯…假设程序本身可以从internet访问,但即使如此,向系统管理员请求也是一件简单而常见的事情。

尝试FUSE。它对于编写虚拟文件系统特别有用。上面已经有很多文件系统了

我不知道您的确切要求,所以我只能猜测,但是linux下放入/dev/shm的每个文件都在ram中。但这并不意味着它不做I/O,只是I/O更快了。如果您不想通过文件描述符或类似的方式进行I/O操作,请按照其他人的建议使用共享内存段,但这对每个人来说都有点难以理解。让其他程序只是打开并读取文件,然后调用程序中的一些函数(这是由内核空间中的/proc完成的)是不可能的。也许文件系统套接字或fifo更适合您的需求(例如,当您有一个select/(e)轮询例程时)。当您完全控制系统时,tmpfs可能对您很有用。