gpt4 book ai didi

linux - 您如何知道任何用户当前打开了哪些文件?

转载 作者:太空狗 更新时间:2023-10-29 11:39:42 26 4
gpt4 key购买 nike

我正在尝试编写脚本或一段代码来存档文件,但我不想存档当前打开的任何内容。我需要找到一种方法来确定目录中的哪些文件是打开的。我想使用 Perl 或 shell 脚本,但如果需要可以尝试使用其他语言。它将在 Linux 环境中,我没有使用 lsof 的选项。我的定影器也有不一致的结果。感谢您的帮助。

我正在尝试将目录中的日志文件移动到另一个目录。但是,如果文件是打开的,我不想对它们做任何事情。

最佳答案

您处理问题的方式不正确。您希望在阅读时防止文件在您的下方被修改,如果没有操作系统支持,您将无法做到这一点。在多用户系统中,您所能期望的最好结果就是保持存档元数据的一致性。

例如,如果您正在创建存档目录,请确保存档中存储的字节数与目录匹配。您可以在读取文件系统之前和之后对文件内容进行校验和,并将其与您写入存档的内容进行比较,并可能将其标记为“不一致”。

你想完成什么?

为回应评论而添加:

查看 logrotate 以窃取有关如何始终如一地处理此问题的想法,只需让它为您完成工作即可。如果您担心文件重命名会使当前写入文件的进程中断,请查看 man 2 rename:

rename() renames a file, moving it between directories if required. Any other hard links to the file (as created using link(2)) are unaffected. Open file descriptors for oldpath are also unaffected.

If newpath already exists it will be atomically replaced (subject to a few conditions; see ERRORS below), so that there is no point at which another process attempting to access newpath will find it missing.

关于linux - 您如何知道任何用户当前打开了哪些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6190200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com