Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux守护进程:如何存储经常更新的数据_Linux_Daemon_Datastore - Fatal编程技术网

Linux守护进程:如何存储经常更新的数据

Linux守护进程:如何存储经常更新的数据,linux,daemon,datastore,Linux,Daemon,Datastore,我主要使用嵌入式系统(PIC微控制器),但我没有Linux系统编程经验 我已经在读Robert Love的《Linux系统编程》一书了,这本书让我基本了解了我的程序应该如何与内核对话,如何工作,等等 现在,我需要编写一个守护进程来监视每个应用程序的internet活动,并存储每个应用程序的带宽。(类似于“nethogs”实用程序,但我的守护进程应该一直运行并存储统计数据,与nethogs不同)虽然我确实需要这样的统计数据(每个应用程序的带宽),但我编写守护进程主要是出于教育目的,所以我不在乎这是

我主要使用嵌入式系统(PIC微控制器),但我没有Linux系统编程经验

我已经在读Robert Love的《Linux系统编程》一书了,这本书让我基本了解了我的程序应该如何与内核对话,如何工作,等等

现在,我需要编写一个守护进程来监视每个应用程序的internet活动,并存储每个应用程序的带宽。(类似于“nethogs”实用程序,但我的守护进程应该一直运行并存储统计数据,与nethogs不同)虽然我确实需要这样的统计数据(每个应用程序的带宽),但我编写守护进程主要是出于教育目的,所以我不在乎这是否是一种重新发明轮子

问题很简单:存储数据的首选方法是什么

比如说,我的守护进程将每秒唤醒一次,获取当前的上传/下载速度和导致网络活动的应用程序,将其存储在某个地方,然后再次休眠

我看到了两种存储数据的方法:

  • 实现我自己的数据格式,某种文本文件。我不喜欢这样,因为它很难扩展,等等;我会依靠一些现有的解决方案来满足我的需求
  • 使用数据库:比如说sqlite。我不确定每秒写入数据库是否是个好主意,因为这可能会很昂贵。也许我应该在RAM中存储数据一分钟,然后再将数据刷新到数据库中,但是如果连接了某个显示实时统计数据的客户端,那么无论如何,还是要每秒刷新数据

这一切我都不确定。也许有一些不同的更好的方法?任何建议都将不胜感激。

您应该退房。您可能可以使用一些接口或至少相同的概念来满足您的需要。谢谢您的建议,但实际上我不想要循环数据库,我希望保留统计数据,以便以后可以检查每个应用程序的每小时/每天/每月/等带宽。客户端是否在同一台机器上运行?@4arkn1gh7,是的,现在我不关心存储的任何远程访问(如果我需要,我可以通过ssh连接,然后运行客户端),你是对的,你有两个选择,要么发明一个新的超级高效的存储布局,要么(2)使用数据库来处理你的需要。如果您打算永久性地存储数据,并最终生成大量数据,那么使用数据库可能会更好。(mariadb、postgressql或sqlite)是一些,但根据您的访问需求,dbm、ndbm等可能更适合。数据库的好处是存储和检索代码经过了彻底的测试。使用下一代gee whiz存储系统,您的里程可能会有所不同。。。