inotify-Linux下監控文件系統操作

[TOC]

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

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

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

查看系統是否支持 inotify

inotify 需要 Linux 內核2.6.13以上版本的支持.輸入命令 uname -a 查看系統的內核版本號.

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權限

inotify-tools 使用

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

  • inotifywait 通過inotify提供了對文件改變的監視
  • inotifywatch 通過inotify提供了對文件系統訪問的統計

inotifywait使用

參數說明

參數 說明
-m 事件發生后不退出,默認當事件發生后退出
-r 遞歸監控當前目錄下的所有文件和目錄.(默認的文件和目錄數最大是 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> 輸出指定內容格式.
--timefmt <fmt> 指定輸出時間格式
-t <seconds> 超時時間.
-e <event1> <event2> ... ] 指定監視事件.

事件說明

事件 說明
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 查看.

解決方案

當前目錄下生成 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

監視腳本:

#!/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文件系統事件監控框架


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

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

推薦閱讀更多精彩內容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,198評論 2 33
  • 隨著應用系統規模的不斷擴大,對數據的安全性和可靠性也提出的更好的要求,rsync在高端業務系統中也逐漸暴露出了很多...
    jimlin閱讀 1,086評論 0 2
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,787評論 18 139
  • 說明: 操作系統:CentOS 5.X 源服務器:192.168.21.129 目標服務器:192.168.21....
    好一朵閱讀 1,273評論 0 0
  • 1.1 inotify介紹 inotify是一種強大的、細粒度的、異步的文件系統事件控制機制。linux內核從2....
    minima1ist閱讀 586評論 0 0