繁体   English   中英

动态监控程序状态

[英]dynamically monitor program status

在 Unix 系统中,可以通过从 /proc 读取数据来动态监控系统。 我希望通过将“当前状态”动态保存到文件中来在我的应用程序中实现这种监控。 但是,我不希望 IO 延迟我的程序,所以最好使文件虚拟化,即不存储到磁盘中,而是实际存储在 memory 中。 有没有办法做到这一点? 感谢您的提示!

为什么不使用共享 memory 和信号量。 做一个'man shmget'作为起点。

作为替代方案,您可以使您的应用程序成为套接字服务器。 这样做,您可以让它仅在被要求时才响应状态信息(甚至不需要用当前状态更新 memory 区域),您还可以从远程机器控制您的程序。 如果状态本身不是大量数据,我认为这是最灵活的解决方案。

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

让它监听端口 80,你可以通过互联网检查你的程序,不费吹灰之力地通过防火墙:-) (嗯......假设程序本身可以从互联网上访问,但即使这样,它也是一件简单而常见的事情要求系统管理员)。

试试保险丝 它对于编写虚拟文件系统特别有用。 它上面已经有许多文件系统。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM