Articles of 文件系统

Linux:在文件保存时触发Shell命令

我想在文件被修改时自动触发一个shell命令。 我认为这可以通过注册一个inotify钩子和调用system在代码中完成,但有没有一个更高级别的bash命令可以完成这个?

如何在Linux上通过inode访问文件

有没有任何用户空间的API或第三方内核模块,可以帮助通过Linux上的inode访问文件? 我试图执行一些像这样的事情: int read_file_by_ino(int ino, int pos, int size, char* buf); int write_file_by_ino(int ino, int pos, int size, const char* buf); int readdir_by_ino(…); int stat_by_ino(…); … 该程序预计在root用户下运行,因此没有安全要求进行权限检查。 谢谢!

确定两个文件path是否指向Linux / C下的同一个文件?

在Linux下,我有两个文件pathA和B: const char* A = …; const char* B = …; 我现在想确定,我应该open(2)他们两个… int fda = open(A, …); int fdb = open(B, …); …我会得到两个文件句柄打开文件系统中的同一个文件? 为了确定这一点,我想到了stat(2) : struct stat { dev_t st_dev; ino_t st_ino; … } 像(伪代码): bool IsSameFile(const char* sA, const char* sB) { stat A = stat(sA); stat B = stat(sB); return A.st_dev == B.st_dev […]

有没有办法知道在Ubuntu的文件创build时间?

我正在使用Ubuntu并想知道文件的创build时间,即使它被修改或访问?

为什么Python给“OSError:文件名太长”的文件名短于文件系统的限制?

以下代码会产生一个意外的exception: open("52bbe674cdc81d4140099b84fa69eea4249bcceee75bcbe4838d911ab076547cfdad3c1c5197752a98e5525fe76613dbe52dcdb1a9a397669babce0f101d010142cffa000000.csv", "w") OSError: [Errno 36] File name too long: '52bbe674cdc81d4140099b84fa69eea4249bcceee75bcbe4838d911ab076547cfdad3c1c5197752a98e5525fe76613dbe52dcdb1a9a397669babce0f101d010142cffa000000.csv' 这是意外的,因为我的文件系统是ext4(根据维基百科)有一个255字节的文件名长度限制。 上面的文件名长度为144。 那么为什么当文件名长度限制还没有被超过时,Python会引发这个exception呢?

xfs – 写入文件时如何不修改mtime?

我有一个文件,1GB的文件,并驻留在磁盘上。 出于性能方面的原因,我重复使用这个文件,并根据需要简单地覆盖它的内容,而不是创build一个新文件并让它增长(每个增长操作必须在inode中更新它的大小)。 我试图挤出更多的性能,并search手册页打开和挂载 ,试图找出何时更新文件的mtime和ctime。 根据我的理解,每次更改文件内容时,都会更新mtime和/或ctime。 这是xfs如何工作? 如果是这样,有没有办法在Linux上禁用这个? 我不关心mtime和ctime,宁可不花费每个写入操作更新它们的成本。 最后,我将彻底摆脱文件系统,并直接写入设备,但同时我希望有一种方法可以在文件系统中执行此操作。 编辑响应答案 为了说明问题,我正在写一个SSD,挤出SSD的每一个操作是非常重要的。 SSD理论上可以处理每秒25K的操作,而这些对我来说都很重要。 除了写入我的文件之外,我不希望他们中的任何一个被浪费掉。 在这个笔记上,实际上我在我的磁盘上有200个1GB的文件。 我试图用上面的问题简化问题。 此外,每个写入必须是同步的,我的程序将不会继续,直到我确信这些位在磁盘上(这是可能的)。 但是我认为这个说明与这个问题是相切的。

最好的Linux文件系统filter选项?

我需要一个Linux文件系统filter来强制执行文件系统调用的ACL策略(允许/拒绝读/写基于运行时计算的东西)。 到目前为止,我偶然发现了DazukoFS和相关的工作 。 我不喜欢DazukoFS的是,它必须为每个内核版本进行编译。 有一些用户模式库可以dynamic地过滤文件系统调用吗? 如果没有,是否有一些内核模式库可以dynamic地过滤FS调用,而不是为每个内核版本编译? 如果没有, DazukoFS和其他的最好的select是什么?

如何在特定的文件系统上限制文件大小?

如何在特定的文件系统上限制文件大小? 影响它的因素有哪些? 任何一个可以给细节..我无法在networking中find它。

inotify不发射文件修改通知

我一直在调整这里的例子,使其重复观看“修改”的文件。 我的代码在这里 。 在我的testing中,inotify通知只是在文件第一次被修改时触发(即touch )。 对该文件的任何后续修改都不会导致任何通知触发。 stat显示“修改”时间已经改变。 此外,修改代码以删除手表,并重新添加每次通知触发(即将inotify_add_watch和inotify_rm_watch移到我的示例中的while(1)循环内)并不能帮助解决此问题。 我想知道这里有没有人可以帮助我做错什么。 另外,虽然我为IN_ALL_EVENTS添加了一块手表,但我只关心IN_MODIFY事件。 不知道这是否有任何区别。 另外,这个用例不起作用吗? 我应该改变我的方法来观看目录吗? 请指教。 TIA。 编辑1:正如由themel指出的, i的处理需要一些修复。 但是即使是固定版本也不会为后续的文件系统“事件”发射通知。 另外,在目录中添加一个监视器而不是文件会显示类似的非确定性行为。 编辑2:我想得到这个基于这个答案工作的asio + inotify示例 。 不幸的是,这个例子并没有为我工作。 任何帮助将非常感激。 TIA。

posix_fadvise(WILLNEED)使IO更慢?

在运行Linux内核版本2.6.18-194.26.1.el5的CentOS 5.5机器上,我注意到posix_fadvise(WILLNEED)使读取60K文件的速度比普通IO慢了近200%。 看起来,实际的fadvise调用是同步的,它也延迟了调度应用程序中使用从文件读取的数据的其他线程。 是否有可能内核忙于从磁盘获取数据,由于调用时间过长,并最终延迟其他计划的任务? 这似乎与预期的asynchronous预取行为相反,我们期望从一个非常时尚的呼叫。 我的问题是:是否有任何可调内核参数可以用来强制asynchronous行为posix_fadvise(WILLNEED)? 像增加内核IO线程一样,页面caching?