inotify-Linux下監(jiān)控文件系統(tǒng)操作

[TOC]

開發(fā)階段當(dāng)功能提交之后,測試人員需要頻繁的修改系統(tǒng)時間進行功能的測試,系統(tǒng)事件常常被改的天昏地暗. 如果服務(wù)器宕機沒有及時的反饋到開發(fā)人員,那么生成的core文件因無法知道版本[1]而無法查看宕機原因,失去它本身所承載的重要意義,所以需要在生成的文件名中增加Git log的SHA和版本號.

Linux的 core pattern 提供了一些自定義core文件的方法,但只能增加PID,UID,GID,hostname,filename,time,signal ID 這些附加信息,所以只能另尋出路.
inotify 提供了對 Linux 文件系統(tǒng)事件的監(jiān)控,通過它可以監(jiān)視目錄下的各種事件. inotify 的詳細信息參見

inotify-tools 工具包幾乎包含了目錄和文件的監(jiān)控,所以本文側(cè)重介紹在bash中使用這個工具.

查看系統(tǒng)是否支持 inotify

inotify 需要 Linux 內(nèi)核2.6.13以上版本的支持.輸入命令 uname -a 查看系統(tǒng)的內(nèi)核版本號.

inotify-tools的下載及安裝

下載地址: http://downloads.sourceforge.net/inotify-tools/inotify-tools-3.13.tar.gz?modtime=1199213676&big_mirror=0

安裝:

tar -zxvf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure
make
make install    # 需要root權(quán)限

inotify-tools 使用

安裝之后會有 inotifywaitinotifywatch 兩個程序.

  • inotifywait 通過inotify提供了對文件改變的監(jiān)視
  • inotifywatch 通過inotify提供了對文件系統(tǒng)訪問的統(tǒng)計

inotifywait使用

參數(shù)說明

參數(shù) 說明
-m 事件發(fā)生后不退出,默認當(dāng)事件發(fā)生后退出
-r 遞歸監(jiān)控當(dāng)前目錄下的所有文件和目錄.(默認的文件和目錄數(shù)最大是 8192個;如果不滿足可以修改/proc/sys/fs/inotify/max_user_watches .
-o <file> Print events to <file> rather than stdout.
-s Send errors to syslog rather than stderr.
-q Print less (only print events).
-qq Print nothing (not even events).
--format <fmt> 輸出指定內(nèi)容格式.
--timefmt <fmt> 指定輸出時間格式
-t <seconds> 超時時間.
-e <event1> <event2> ... ] 指定監(jiān)視事件.

事件說明

事件 說明
access file or directory contents were read
modify file or directory contents were written
attrib file or directory attributes changed
close_write file or directory closed, after being opened in writeable mode
close_nowrite file or directory closed, after being opened in read-only mode
close file or directory closed, regardless of read/write mode
open file or directory opened
moved_to file or directory moved to watched directory
moved_from file or directory moved from watched directory
move file or directory moved to or from watched directory
create file or directory created within watched directory
delete file or directory deleted within watched directory
delete_self file or directory was deleted
unmount file system containing file or directory unmounted

詳細的信息可以使用 man inotifywait 查看.

解決方案

當(dāng)前目錄下生成 core 文件之后,將 core 文件重命名為 core.filename.pid_version_sha 格式.
修改core pattern生成core.filename.pid格式的文件:

echo "core.%e.%p" > /proc/sys/kernel/core_pattern
echo "1" > /proc/sys/kernel/core_uses_pid

監(jiān)視腳本:

#!/bin/bash

dir=$1
inotifywait -m -q -r -e close_write --format '%f' $dir | while read file
do
    if [[ $file == core.t3* ]];
    then
        log=`sed -n "/commit/ s/commit //p"` ../bin/bin.gitlog
        vsn=`cat ../bin/version.txt`
        mv $file ${file}_${vsn}_${log}
    fi
done

拓展:
Inotify: 高效年扩、實時的Linux文件系統(tǒng)事件監(jiān)控框架


  1. 為了避免發(fā)布人員將debug版本發(fā)到外網(wǎng),我們內(nèi)網(wǎng)使用的都是release版本的程序,編譯完成之后分離出符號表 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胳泉,一起剝皮案震驚了整個濱河市瘾腰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屎暇,老刑警劉巖腿时,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件况脆,死亡現(xiàn)場離奇詭異,居然都是意外死亡批糟,警方通過查閱死者的電腦和手機漠另,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跃赚,“玉大人笆搓,你說我怎么就攤上這事∥嘲粒” “怎么了满败?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長叹括。 經(jīng)常有香客問我算墨,道長,這世上最難降的妖魔是什么汁雷? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任净嘀,我火速辦了婚禮,結(jié)果婚禮上侠讯,老公的妹妹穿的比我還像新娘挖藏。我一直安慰自己,他們只是感情好厢漩,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布膜眠。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宵膨。 梳的紋絲不亂的頭發(fā)上架谎,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音辟躏,去河邊找鬼谷扣。 笑死,一個胖子當(dāng)著我的面吹牛捎琐,可吹牛的內(nèi)容都是我干的抑钟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼野哭,長吁一口氣:“原來是場噩夢啊……” “哼在塔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拨黔,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤蛔溃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后篱蝇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贺待,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年零截,在試婚紗的時候發(fā)現(xiàn)自己被綠了麸塞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡涧衙,死狀恐怖哪工,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弧哎,我是刑警寧澤雁比,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站撤嫩,受9級特大地震影響偎捎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜序攘,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一茴她、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧程奠,春花似錦丈牢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朴皆。三九已至帕识,卻和暖如春泛粹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肮疗。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工晶姊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伪货。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓们衙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碱呼。 傳聞我的和親對象是個殘疾皇子蒙挑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,135評論 2 34
  • 隨著應(yīng)用系統(tǒng)規(guī)模的不斷擴大,對數(shù)據(jù)的安全性和可靠性也提出的更好的要求愚臀,rsync在高端業(yè)務(wù)系統(tǒng)中也逐漸暴露出了很多...
    jimlin閱讀 1,058評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理忆蚀,服務(wù)發(fā)現(xiàn),斷路器姑裂,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 說明: 操作系統(tǒng):CentOS 5.X 源服務(wù)器:192.168.21.129 目標(biāo)服務(wù)器:192.168.21....
    好一朵閱讀 1,237評論 0 0
  • 1.1 inotify介紹 inotify是一種強大的馋袜、細粒度的、異步的文件系統(tǒng)事件控制機制舶斧。linux內(nèi)核從2....
    minima1ist閱讀 571評論 0 0