相关疑难解决方法(0)

为什么 NFS 挂载上的 inotify 事件不同?

前段时间我注意到,当文件保存到 NFS 挂载和本地文件系统时,inotify 报告的事件是不同的。

底层 VFS 不应该提供文件操作的统一视图吗?

以下是 Debian 7.1 (Linux 3.2) 中 VIM 保存文件的轨迹

在 NFS 挂载上:

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2048 (IN_MOVE_SELF)
wd=1 mask = 4 (IN_ATTRIB)
wd=1 mask = 1024 (IN_DELETE_SELF)
wd=1 mask = 32768 )
Run Code Online (Sandbox Code Playgroud)

在本地文件系统上

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2 (IN_MODIFY)
wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 8 (IN_CLOSE_WRITE)
wd=1 mask = 4 (IN_ATTRIB)
Run Code Online (Sandbox Code Playgroud)

使用 …

linux nfs inotify

11
推荐指数
1
解决办法
1万
查看次数

Inotify 等待目录中的大量文件

我想要做的是,监视一个目录(不是递归的,只有一个)以创建新文件,并将这些文件在写入时附加到一个大文件中。

正在写入的文件数量巨大,可能高达 50,000。

通过使用inotifywait,我正在监视目录,例如:

inotifywait -m -e create ~/folder | awk '($2=="CREATE"){print $3}' > ~/output.file
Run Code Online (Sandbox Code Playgroud)

所以我存储了创建的新文件的名称,~/output.file然后使用 for 循环

for FILE in `cat ~/output.file` 
do
    cat $FILE >> ~/test.out
done
Run Code Online (Sandbox Code Playgroud)

如果写入(创建)文件的速率~/folder类似于每秒 1 个文件,则它工作正常。

但是要求很大,而且创建文件的速度非常高,比如每分钟 500 个文件(甚至更多)。

我检查了~/folder进程完成后的文件数,但它与inotifywait输出不匹配。有 10-15 个文件的差异,各不相同。

此外,循环

for FILE in `cat ~/output.file`
do
done
Run Code Online (Sandbox Code Playgroud)

不会在~/output.file写入时处理所有文件。

任何人都可以建议我解决这个问题的优雅解决方案吗?

linux performance awk inotify

8
推荐指数
1
解决办法
4384
查看次数

在纯 bash 中检查下载是否完成

简短的故事是,我可能需要一个简单的 bash 循环,它会定期检查给定文件的大小自上次检查以来是否发生了变化。

长话短说,我将使用 Firefox下载文件my_file.txt。我想在下载完成后运行一个命令。Firefox 似乎没有提供我可以使用的 dbus 调用。存在一些具有上述功能的附加组件,但我需要一个相当可靠的解决方案。所以我想我可以运行一个 bash 脚本来定期检查my_file.txt的大小是否随着时间的推移而变化,或者已经稳定下来。该文件是一个大小 <=5mb 的文本文件,将在本地下载,因此它非常可靠并且下载应该线性运行(没有断开连接、服务器问题等)。

你能帮我写一个这么简单的bash脚本吗?探测文件的频率似乎确实是使事情有效工作的关键。就像我说的,它是一个 <=5mb 的文本文件,但可以小到 10kb,驻留在 SSD 驱动器上。

另外,也许有更好的方法来实现这一目标?就像我说的,我需要一个可靠的解决方案,它可以在 Linux 中以最少的依赖运行。也许是下载管理器?或者任何文件监控守护进程?或者为此提供文件系统API?或者使用访问时间而不是大小?

bash download firefox files

2
推荐指数
1
解决办法
2199
查看次数

标签 统计

inotify ×2

linux ×2

awk ×1

bash ×1

download ×1

files ×1

firefox ×1

nfs ×1

performance ×1