如何检查Linux中是否打开了文件?

Dar*_*tel 3 linux file gedit lsof

问题是,我想跟踪用户是否尝试在共享帐户上打开文件.我正在寻找任何记录/技术,帮助我知道在运行时是否打开了相关文件.

我想创建一个脚本来监视文件是否打开,如果是,我希望它向特定的电子邮件地址发送警报.我正在考虑的文件是一个常规文件.

我试过lsof | grep filename用来检查文件是否在gedit中打开,但命令没有返回任何内容.

实际上,我正在尝试这个宠物项目,因此问题.

小智 8

该命令lsof -t filename显示打开特定文件的所有进程的 ID。lsof -t filename | wc -w为您提供当前访问文件的进程数。

  • 我建议使用“wc -l”而不是“wc -w”,它在更多情况下适用,并且“lsof”不会在每行放置多个文件名。 (2认同)

Hen*_*ist 5

将文件读入gedit等编辑器这一事实并不意味着该文件仍处于打开状态.编辑器很可能打开文件,读取其内容然后关闭文件.编辑完文件后,您可以选择覆盖现有文件或另存为另一个文件.


Jim*_*lay 0

您可以使用ls -lrt,它显示 shell 中最后一次的 RW 操作。然后就可以判断文件是否打开了。确保您位于正确的目录中。

  • “ls -lrt”使用修改时间戳进行排序。如果您的文件系统支持它(在 Linux 中通常支持),您还可以使用“ls -lrt --time=atime”来查看文件上次访问的时间。 (2认同)