簡體   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