我想阻止我的一个根进程删除某个文件。所以我遇到了 flock 命令,它似乎符合我的需要,但我没有得到它的语法。
如果我只表示共享锁,则不起作用:
flock -s "./file.xml"
如果我添加超时参数,它仍然不起作用:
flock -s -w5 "./file.xml"
似乎是这样,它适合
flock [-sxun][-w #] fd#
方式。(这个
fd#
参数是什么?)所以,我试过:
flock [-sxon][-w #] file [-c] command
使用
flock -s -w5 "./file.xml" -c "tail -3 ./file.xml"
并且它起作用了,执行了 ./file.xml 中的 tail 命令。但我想知道,锁定是在命令之后结束还是在命令执行结束后持续 5 秒?我的主要问题是,如何防止另一个根进程在 linux 中删除文件?
最佳答案
不,flock 不会阻止任何人做任何事情。 Unix 锁是 ADVISORY,这意味着它们防止其他进程也调用 flock(或者在共享锁的情况下,防止另一个进程使用独占锁)。
它不会阻止 root 或其他任何人读取、写入或删除文件。
在任何情况下,即使是强制锁定,也不会阻止文件被删除,因为锁定的是文件而不是目录条目。
关于linux - 如何使用 linux flock 命令防止另一个 root 进程删除文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1040828/