Linux 為什么多進(jìn)程能夠讀寫(xiě)正在刪除的文件

Linux中多進(jìn)程環(huán)境下,打開(kāi)同一個(gè)文件,當(dāng)一個(gè)進(jìn)程進(jìn)行讀寫(xiě)操作,如果另外一個(gè)進(jìn)程刪除了這個(gè)文件,那么讀寫(xiě)該文件的進(jìn)程會(huì)發(fā)生什么呢?

  • 因?yàn)槲募粍h除了,讀寫(xiě)進(jìn)程發(fā)生異常?
  • 正在讀寫(xiě)的進(jìn)程仍然正常讀寫(xiě),好像沒(méi)有發(fā)生什么?

學(xué)操作系統(tǒng)原理的時(shí)候,我們知道,linux是通過(guò)link的數(shù)量來(lái)控制文件刪除,只有當(dāng)一個(gè)文件不存在任何link的時(shí)候,這個(gè)文件才會(huì)被刪除。

而每個(gè)文件都會(huì)有2個(gè)link計(jì)數(shù)器-- i_count 和 i_nlink。i_count的意義是當(dāng)前使用者的數(shù)量,也就是打開(kāi)文件進(jìn)程的個(gè)數(shù)。i_nlink的意義是介質(zhì)連接的數(shù)量;或者可以理解為 i_count是內(nèi)存引用計(jì)數(shù)器,i_nlink是硬盤(pán)引用計(jì)數(shù)器。再換句話說(shuō),當(dāng)文件被某個(gè)進(jìn)程引用時(shí),i_count 就會(huì)增加;當(dāng)創(chuàng)建文件的硬連接的時(shí)候,i_nlink 就會(huì)增加。

對(duì)于 rm 而言,就是減少 i_nlink。這里就出現(xiàn)一個(gè)問(wèn)題,如果一個(gè)文件正在被某個(gè)進(jìn)程調(diào)用,而用戶(hù)卻執(zhí)行 rm 操作把文件刪除了,會(huì)出現(xiàn)什么結(jié)果呢?

當(dāng)用戶(hù)執(zhí)行 rm 操作后,ls 或者其他文件管理命令不再能夠找到這個(gè)文件,但是進(jìn)程卻依然在繼續(xù)正常執(zhí)行,依然能夠從文件中正確的讀取內(nèi)容。這是因?yàn)椋瑀m 操作只是將 i_nlink 置為 0 了;由于文件被進(jìn)程引用的緣故,i_count 不為 0,所以系統(tǒng)沒(méi)有真正刪除這個(gè)文件。i_nlink 是文件刪除的充分條件,而 i_count 才是文件刪除的必要條件。

基于以上只是,大家猜一下,如果在一個(gè)進(jìn)程在打開(kāi)文件寫(xiě)日志的時(shí)候,手動(dòng)或者另外一個(gè)進(jìn)程將這個(gè)日志刪除,會(huì)發(fā)生什么情況?

是的,數(shù)據(jù)庫(kù)并沒(méi)有停掉。雖然日志文件被刪除了,但是有一個(gè)進(jìn)程已經(jīng)打開(kāi)了那個(gè)文件,所以向那個(gè)文件中的寫(xiě)操作仍然會(huì)成功,數(shù)據(jù)仍然會(huì)提交。

下面,告訴大家如何恢復(fù)那個(gè)刪除的文件。

例如,你刪除了tcpdump.log,執(zhí)行l(wèi)sof | grep tcpdump.log,你應(yīng)該能看到這樣的輸出:

tcpdump 2864 tcpdump 4w REG 253,0 0 671457 /root/tcpdump.log (deleted)

然后:

cp /proc/2864/fd/4 /root/tcpdump.log

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,595評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,560評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,035評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,814評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,224評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,444評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,988評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,804評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,998評(píng)論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評(píng)論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,237評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,665評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,927評(píng)論 1 287
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,706評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,993評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,198評(píng)論 2 33
  • 簡(jiǎn)介 用簡(jiǎn)單的話來(lái)定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 5,977評(píng)論 1 13
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 99,431評(píng)論 9 467
  • 只是一些簡(jiǎn)單的線條,但我願(yuàn)以黑白為筆,畫(huà)下對(duì)生活的歡喜。
    南山公子閱讀 184評(píng)論 0 1
  • 《立》是著名作家池莉?qū)懰畠旱某砷L(zhǎng)過(guò)程的一本書(shū),書(shū)中記錄了從孩子的由來(lái)到孩子二十三歲參加工作期間的所有成長(zhǎng)故事,...
    曦睿119閱讀 408評(píng)論 1 3