在實(shí)際的生產(chǎn)中,都會(huì)存在不同系統(tǒng)的對(duì)接問(wèn)題业扒,比如A系統(tǒng)將數(shù)據(jù)生產(chǎn)后存放到/data文件下检吆,B系統(tǒng)需要監(jiān)控/data文件夾下數(shù)據(jù)的變動(dòng)情況,來(lái)做出調(diào)整程储,linux系統(tǒng)中inotify-tools正好可以完成系統(tǒng)的監(jiān)控而supervise正好可以完成進(jìn)程的持續(xù)監(jiān)控蹭沛,起到出錯(cuò)重啟的效果臂寝。
inotify-tools
inotify-tools下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
上面是inotify-tools的下載地址。
- 安裝inotify-tools
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
對(duì)于make的操作最好在root權(quán)限下進(jìn)行摊灭,因?yàn)槠淇赡軙?huì)涉及到創(chuàng)建文件夾或文件的操作咆贬,需要對(duì)文件夾的訪問(wèn)權(quán)限。
- 創(chuàng)建軟鏈接
如果是64位系統(tǒng)
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
- 配置參數(shù)
echo 104857600 > /proc/sys/fs/inotify/max_user_watches
echo 'echo 104857600 > /proc/sys/fs/inotify/max_user_watches' >> /etc/rc.local
- 設(shè)置自啟動(dòng)
vi /etc/rc.local
加入下面的代碼
/usr/local/bin/inotifywait -m -r -d -o/var/log/change.log --timefmt '%F %T' --format '%T %w%f %e' -e close_write -e create /usr/local/test
其中/var/log/change.log是日志路徑帚呼,/usr/local/test是監(jiān)控的網(wǎng)站路徑
reboot重啟生效
- 編寫監(jiān)控文件夾的腳本
#!/bin/bash
#filename watchdir.sh
path=$1
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $path
腳本中命令參數(shù)的了解
inotifywait命令參數(shù)
-m是要持續(xù)監(jiān)視變化掏缎。
-r使用遞歸形式監(jiān)視目錄。
-q減少冗余信息煤杀,只打印出需要的信息御毅。
-e指定要監(jiān)視的事件列表。
--timefmt是指定時(shí)間的輸出格式怜珍。
--format指定文件變化的詳細(xì)信息端蛆。
可以支持的文件夾的操作access 訪問(wèn),讀取文件酥泛。
modify 修改今豆,文件內(nèi)容被修改。
attrib 屬性柔袁,文件元數(shù)據(jù)被修改呆躲。
move 移動(dòng),對(duì)文件進(jìn)行移動(dòng)操作捶索。
create 創(chuàng)建插掂,生成新文件
open 打開,對(duì)文件進(jìn)行打開操作腥例。
close 關(guān)閉辅甥,對(duì)文件進(jìn)行關(guān)閉操作。
delete 刪除燎竖,文件被刪除璃弄。
- 測(cè)試
root@hadoop:/opt/docker-sh# bash watchdir.sh /data
創(chuàng)建docker-sh文件夾
29/11/18/19:19 /data/ docker-sh
創(chuàng)建file文件
29/11/18/19:20 /data/docker-sh/ file
修該文件
29/11/18/19:20 /data/docker-sh/ file
刪除文件
29/11/18/19:21 /data/docker-sh/ file