繁体   English   中英

文件锁定似乎不起作用(flock / lockf)

[英]File locking seems not to work (flock/lockf)

在我的项目中,我们有一些脚本可以启动应用程序,进行一些性能测试,然后终止该应用程序。 问题是脚本有时会发生一些坏事,例如崩溃。 然后我们的应用程序“挂在空中”。

我想通过将pid值写入包含应用程序的pid / pids的文件来解决此问题,但是要正确地做到这一点(我认为),我想这样做:

lock the file
process the pid/pids
clean file entries
unlock the file

然后,我搜索了如何在Python 2.7锁定文件(因为我们正在使用它来编写脚本),因此我找到了https://docs.python.org/2/library/fcntl.html以及flocklockf方法,但我认为做错了。

我想测试一下这些方法是否正常工作,所以做到了:

echo "test" > testFile
(open repl)
>>> import fcntl
>>> f = open("testFile", "rw")
>>> fcntl.flock(f, fcntl.LOCK_EX)

即使我锁定了文件(或者至少我认为是的),我也可以做到

echo "aaa" >> testFile

在其他终端会话中,它成功完成,文件已更改,没有错误。

如果有特定于操作系统的技巧,我应该使用(但我怀疑python标准库不能以可移植的方式处理锁定),这需要在Linux上运行。

默认情况下,文件锁是建议性的,这意味着它们仅在所有进程配合时才起作用,即它们在尝试I / O之前检查文件是否被锁定。 没有什么能阻止进程忽略咨询锁并仅写入文件。

还有强制性锁,系统通过这些强制性强制其他进程遵守这些锁。 这可能是您想要的,应该使用谷歌“强制性锁定linux”获取详细信息,该过程主要涉及使用某些参数挂载有问题的文件系统。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM