问题标签 [file-monitoring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在读取时检测文件已被截断
我正在从一组文件(日志文件)中读取行,因为它们是使用 pyinotify 编写的。
我正在使用 python 本机方法打开和读取文件:
这通常是稳定的,可以处理被删除和重新创建的文件。pyinotify 将通知取消链接和后续链接。
但是,某些日志文件并未被删除。相反,它们被截断并将新内容写入同一文件的开头。
我无法可靠地检测到何时发生这种情况,因为 pyinotify 只会报告一次写入。我目前得到的唯一证据是 pyinotify 报告写入并readline()
返回一个空字符串。但是,两个后续写入可能会触发相同的行为。
我曾考虑将文件的大小与文件的大小进行比较,file.tell()
但根据文档tell
会产生一个不透明的数字,而且似乎不能相信这是一个字节数。
有没有一种简单的方法来检测文件在读取时被截断?
编辑:
可以使用简单的 shell 命令模拟截断文件:
为了补充这一点,可以使用一个简单的 python 脚本来确认file.tell()
文件被截断时不会减少:
bash - 如何在不清除屏幕的情况下刷新多行变量输出
我正在尝试监视一个日志文件,然后显示特定请求调用的计数,输出将显示标题行,其中包含每个请求的名称“PUT GET HEAD”,并且低于每行每个节点的请求计数。我需要刷新显示每 1 秒计数的变量的输出
下面代码的问题,脚本不断删除前几行并上升到屏幕顶部,而输出应该是固定的,只有请求的数量应该刷新
这是预期的输出:
节点 PUT - HEAD - GET - DELETE node-2 1849 2183 41387 0
#节点 3 5339 8534 40838 0
#节点 4 1829 2196 46503 0
#预期输出:每 1 秒刷新一次数字时应显示与上面相同
java - 如何使用观察者模式通过线程进行文件监控?
我正在尝试将观察者模式实现到我制作的游戏中。当使用线程在战区文件中创建反派时,我想使用观察者模式使用线程创建英雄并将其添加到同一文件中。恶棍和英雄是使用工厂方法模式创建的。我不确定将我的 HeroCreationMain 类链接到观察者模式类的去向。
恶棍创造
英雄创造
观察者
可观察的
敌人状态
python-3.x - 无法在 Windows Server 2012R2 中使用 Python Watch Dog 库监控网络存储位置(网络共享路径)
当我使用下面的代码监视同一服务器上的任何存储位置时,它工作得很好。然而,当我尝试将其与网络驱动器(已经映射到我的机器)一起使用时,它不起作用。请查看代码并建议如何进行。请让我知道我是否可以使用任何其他库或其他技术来实现该目的。目前我正在使用 Python Watchdog 库。
file-monitoring - 文件和文件夹监控效率
我正在学习如何使用新的 C++ 文件系统库,并且我已经看到了如何实现文件夹监视器的示例,它可以做三件简单的事情:检测文件创建;文件修改;和文件删除。它通过在每个设定的时间段(例如 1000 毫秒)搜索整个文件夹来工作,并根据您自己的代码保存的另一条记录(例如 unordered_map/hash 表)检查文件系统中的每个文件条目,以便每次记录更新 查询文件系统以获取文件夹中每个文件的名称,然后在现有文件的记录中搜索此名称。这发生在文件夹中的文件数量上。
我想知道是否有更有效的方法来处理这个问题,例如将操作系统检测到的每个修改添加到数组或排队,这样每次监视器更新时,它只会检查是否有任何内容已放置在此数组中以获取文件创建,删除或修改,而不是检查文件系统中每个文件与文件记录之间的差异。
c# - Http-Server,监控路径/文件夹
我不知道从哪里开始,我从模板管理代码。使用下面的代码,我可以从 Http 服务器端下载所有文件。它会检查这是否已经下载,如果是,那么它不会从站点中获取它。我只想下载部分文件。我正在尝试想一个简单的解决方案来实现以下几点:
- 获取 Server-Http 上的最后修改数据或最后创建时间。我了解如何从文件夹执行此操作,但我不想下载文件然后检查,我需要在服务器上执行此操作。Onlocal pc 将作为
FileInfo infoSource = new FileInfo(sourceDir);
,然后infoSource.CreationTime
sourceDir 是文件路径。http上可能有类似的东西? - 仅从服务器站点获取最新的 10 个文件。没有最新的,但最新的 10。
- 监视服务器站点,以便一旦将文件 MyFileName_Version 放在站点上,它将获取具有此命名约定的最新文件。
这些方法中的任何一种都对我有用,但我仍然是这些方法的新手,所以在这里挣扎。目前我有以下代码:
python - linux中的Python 3文件更改事件侦听器不使用模块或安装
我有许多异步线程,我想在其中触发文件更改事件。
理想情况下,它的工作方式类似于看门狗或 inotify,但我无法安装任何东西,包括新模块(合规和政治)。大约有 100 个文件可能会更改。这将在至少使用 Python 3.5 的大约 150,000 个 Linux 实例中部署。它确实需要尽可能高效,所以我不希望线程坐在 while 循环中。它还需要相当及时。我预计有时会在一秒钟内进行多次更改,因此延迟和睡眠计时器也已失效。
有没有可能使用与看门狗/通知相同的机制、某些默认模块或其他方法来实现此目的的方法?
1024 谢谢!
c# - c# FileSystemWatcher如何处理多个文件?
如果您有 c# FileSystemWatcher 使用 Created 事件监视目录,如果处理需要一段时间,您将如何处理多个文件并处理它们。所以一些文件进来,然后开始处理。如果在处理完成之前有更多文件进入,应该如何处理或者 FileSystemWatcher Created 事件是否将它们排队?对于这种情况,您是否需要使用异步方法事件处理程序?
python - 使用 poll 或 select 监控 proc 挂载
我正在尝试提出一个脚本来监视 /proc/mounts 并在检测到只读文件系统时通知回来。
在 python 中,一种方法是将 /proc/mounts 的值存储在列表中,并cat /proc/mounts
在循环中继续执行 a 并直接检查“ro”实体。但是我想使用 poll 或 select 来代替它,因为这样很有效并且仅在事件发生时才采取行动。
我看到民意调查更适合选择。据我了解,我们可以将 /proc/mounts 的 fd 放在 exceptfds 中进行选择,当有异常时我们会收到通知(请在此处更正我,行中的更改会发出异常信号?)。只是为了测试,我在一个普通文件上尝试它 - 现在,当我打开并e.txt
对此文件进行更改时,是否预计会打印整个文件?目前,它没有。我错过了什么?
对于 /proc/mounts 监控:
如何使用 select 或 poll 来实现这一点。
python - 有没有办法使用 sudo 访问文件在 python 中监视文件系统?
目前我看到我们有看门狗库,但它只允许看门狗在 linux 操作系统或 windows 操作系统上的登录用户中访问的那些文件。
有没有办法为通过 sudo 访问的文件添加看门狗?
我确实尝试过 watchdog.observer 但它的抛出错误权限被拒绝。