1. 跪求linux 下的一個shell腳本來監控指定的目錄及其子目錄中的任何文件變化然後報告到指定記錄文件。
我可以給你提供個思路,可以實現你的需求,同時你自己寫出來也專是一個不錯的學習機屬會,我寫過一個「一點觸發多點生效」的shell腳本,應用到inotify技術,你可以參考下語法應用。http://hi..com/cong_rong520/blog/item/563ce16e8f0bc8e442169482.html
2. cacti怎麼去監控linux下某個文件的大小
cacti居然還有這么強大的功能,坐等大神回答!
3. LINUX下,如何監控文件,得到新寫入文件的內容 一個文件不斷被寫入,要
看tail -f的實現.(coreutils)
4. java如何實現linux下實時監控文件是否有變化
linux下的inotify系統調用可以實現這點,你可以用c來寫,然後通知java,或者找找inotify的java binding庫 比如 jnotify.sourceforge.net
5. linux如何追蹤一個正在變化的文件
tail -n 10 -f filename 查看文件最後10行,動態刷新 -f (flow流動)
6. 諾頓 linux 怎樣監控文件
解決方案 雙擊任務欄諾頓的圖標打開諾頓的設置主頁: 點擊紅框中的Norton Protection Center按鈕打開設置中心: 點擊設置按鈕,再點擊Norton Internet Security選項: 再點擊左側的個人防火牆按鈕: 可以打開或者關閉個人防火牆。
7. linux tail監控日誌文件
先用date獲取當前日期,格式化後得到文件名。
filename=`date +"%Y-%m-%d"`
tail -n 50 ${filename}.log
8. 在windows下 怎麼用java 實現對linux系統下的一個文件夾進行監控
我沒法給你源碼,但可以給你思路:
【最簡單粗暴的】
1. 寫一個死循環
2. sleep 個 100 毫秒
3. 第一次啟動建立一個HashMap<File, Date>,掃描所有文件並讀取創建日期記錄下來(包括子文件夾)
4. 記錄全部文件的數量 fileCount, lastFileCount
5. 檢查是否數量有變,如果木有就沒有新增文件
6. 如果有變化,。。。。你懂的,再掃找出不在HashMap裡面的就是新增的了
【特殊參考】
參考tomcat、jboss這類伺服器軟體如何掃面檢測部署文件夾下面文件變動的
【高階】
參考防毒軟體設計原理,截獲系統IO,有對你指定文件夾的Access操作時,按需記錄
9. 在linux內核如何改寫內核函數,來監控一個進程對文件做了哪些的操作,並把具體的操作列印出來。
如果只是監視復普通文件操作,一般情制況下不需要修改內核。
運行「strace -e file -o log.txt 可執行文件名" 即可。對已經運行的程序,用strace -p pid。
最創建子進程的,加-f參數。具體man strace。
10. 如何在linux中使用inotify實現文件系統的監控(php介面)
<?php
define('DIRWATCHER_CHANGED',IN_MODIFY|IN_CLOSE_WRITE|IN_MOVE|IN_CREATE|IN_DELETE);
/**
*DirWatcher
*
*@authorCharlesTang<charlestangATfoxmailDOTcom>
*/
classDirWatcher{
private$_callbacks=array();
private$_directories=array();
private$_inotify=null;
publicfunction__construct(){
$this->_inotify=inotify_init();
}
publicfunctionaddDirectory($path,$mask=DIRWATCHER_CHANGED){
$key=md5($path);
if(!isset($this->_directories[$key])){
$wd=inotify_add_watch($this->_inotify,$path,$mask);
$this->_directories[$key]=array(
'wd'=>$wd,
'path'=>$path,
'mask'=>$mask,
);
}
}
publicfunctionremoveDirectory($path){
$key=md5($path);
if(isset($this->_directories[$key])){
$wd=$this->_directories[$key]['wd'];
if(inotify_rm_watch($this->_inotify,$wd)){
unset($this->_directories[$key]);
}
}
}
publicfunctionaddDirectories($directories){
foreach($directoriesas$dir){
if(!is_array($dir)){
$this->addDirectory($dir);
}else{
$this->addDirectory($dir['path'],$dir['mask']);
}
}
}
publicfunctionaddCallback($callback,$params=array(),$priority=9){
$key=md5(var_export($callback,true));
if(!isset($this->_callbacks[$key])){
$this->_callbacks[$key]=array(
'callable'=>$callback,
'params'=>$params,
'priority'=>$priority,
);
usort($this->_callbacks,create_function('$a,$b','return$a["priority"]>$b["priority"];'));
}
}
publicfunctionremoveCallback($callback){
$key=md5(var_export($callback,true));
if(isset($this->_callbacks[$key])){
unset($this->_callbacks[$key]);
}
}
publicfunctionaddCallbacks($callbacks){
foreach($callbacksas$callable){
if(is_callable($callable)){
$callable=array(
'callable'=>$callable,
'params'=>array(),
'priority'=>9,
);
}
$this->addCallback($callable['callable'],$callable['params'],$callable['priority']);
}
}
publicfunctionstartWatch(){
while(TRUE){//啟動一個常駐進程,監視目錄的變化,事件觸發回調函數
$event=inotify_read($this->_inotify);
if(defined('DIRWATCHER_DEBUG')&&DIRWATCHER_DEBUG){
error_log(vsprintf("[wd:%d][mask:%d][cookie:%s]%s",$event[0]));
}
foreach($this->_callbacksas$callable){
call_user_func_array($callable['callable'],array_merge($event,$callable['params']));
}
}
}
publicfunctionstopWatch(){
//沒有實現,可以引入pcntl,優雅退出,退出前記得fclose($this->_inotify)
}
}