亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux文件執行中的鎖定怪現象分析

發布時間:2021-09-29 15:35:18 來源:億速云 閱讀:164 作者:小新 欄目:系統運維

這篇文章將為大家詳細講解有關Linux文件執行中的鎖定怪現象分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。


linux下,一個可執行文件exe1正在執行中,rm –f可以將其刪除,mv可以將其移除,mv $other exe1也可以將其替換,但是cp $other exe1則顯示文件忙,求解。

這實際上并不是一個真正的問題,因為只要你的基礎知識扎實,這個問題顯然很簡單,原因只有一個,那就是linux文件基于引用計數。現在問題是這些個命令如何來操作一個文件的引用計數。下面的討論都是基于獨占打開的模式。

如果一個文件已經被打開,那么它的引用計數會增加1,如果調用了rm,實際上底層只是unlink了一下,也就是說將它的引用計數減少1,這樣雖然你在界面上(命令行或者GUI)看不到它了,但是它被打開時的計數還在,只有當它被關閉的時候,引用計數變為0,才徹底刪除它。

再說mv命令,它實際上只是一個源文件的rename而已,如果mv的目標本來就存在,那么在目標上執行一個類似rm的效果,也就是unlink一下,結合引用計數的理論,目標文件如果已經被打開,那么當關閉的時候將不復存在,如果本來就沒有被打開,那么mv的時候,目標直接被刪除,因為unlink之后,它的引用計數變成了0。

最后看一下cp命令,cp的話并不觸動源文件和目標文件元數據本身(時間戳除外),它只是打開源文件和目標文件,在源文件上執行read,然后將結果write到目標文件,實質上是一個IO操作,對于可執行文件,是獨占打開的,并不允許寫入,因此會出錯。

這里就不再列出內核源碼了,可以自行參考系統調用的實現而加深理解,不過最好別干巴巴的看,還是結合strace以及objdump比較好,要知道是怎么以及什么時候調用的,以及調用參數是什么,否則就和八股文沒區別了。那么這和我工作中的bug有什么關系呢?這個bug源于OpenVPN的日志記錄,并且配置了日志回滾,回滾配置文件關鍵字段如下:

size 4M

missingok

rotate 9

compress

delaycompress

create 644 xx xx

…

結果當日志回滾成了vpn.log.1之后,這個vpn.log.1依然繼續被寫入。這個原因正是rename造成的。在logrotate的man頁面中,有一個copytruncate配置,其含義就是不進行rename,而只是copy,然后將原來的文件truncate,加入這個就可以了。

千萬不要小看這些很簡單的命令,真正理解的人并不多,即使真正的理解,出現問題,能真正對應到原理也不多,很簡單的東西如果能徹底做到透徹的理解并且活用,再往深入學習才是有意義的。

關于“Linux文件執行中的鎖定怪現象分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜阳县| 青海省| 吉水县| 沾益县| 千阳县| 嫩江县| 佳木斯市| 乐陵市| 湖北省| 宣城市| 江都市| 棋牌| 宁强县| 岳阳县| 洪泽县| 定西市| 东海县| 江口县| 康平县| 曲靖市| 青河县| 开化县| 遂川县| 资源县| 惠来县| 桂平市| 化州市| 汕头市| 沾化县| 邳州市| 建德市| 顺义区| 恭城| 丹寨县| 资兴市| 沅陵县| 安阳市| 江陵县| 敖汉旗| 凤翔县| 内丘县|