當前位置:首頁 » 編程語言 » java文件監控

java文件監控

發布時間: 2022-12-26 17:00:25

① 如何監控java cpu使用率

1、確定當前系統安裝的jdk是1.6版本以上
2、windows系統中有獲取cpu使用率的可執行文件exe,只要在java中獲取該文件的執行路徑,通過Java調用即可。
3、獲取操作系統可執行文件目錄procCmd
4、調用java的Runtime.getRuntime().exec執行cmd應用程序
5、利用java中sleep來計算睡眠前後cpu的忙碌時間與空閑時間,因為sleep不會釋放系統資源
6、根據忙碌時間占總時間的比例來計算cpu使用率!

② 如何為java應用程序啟用遠程jmx監控

首先使用ps -ef 確認你要監控的weblgoic,修改setDomain.sh文件 添加如下內容:
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=9999"
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false "
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.pwd.file=/opt/bea/jrockit90_150_06/jre/lib/management/jmxremote.password"
# JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false"
export JAVA_OPTIONS
關於jconsole的訪問密碼,可在該實例所使用的$JRE_HOME/lib/management/下配置,很重要的兩個文件是
jmxremote.password.template #配置訪問用戶名與密碼
jmxremote.access #增加該用戶訪問許可權,

這樣配置就好了

③ Java 如何監控文件目錄的變化

JavaSE 1.7提供了相關的API,去監視文件或者文件夾的變動,主要的API都在java.nio.file下面,其大概流程如下:

packageorg.xdemo.superutil.j2se.filewatch;

importstaticjava.nio.file.LinkOption.NOFOLLOW_LINKS;

importjava.io.File;
importjava.io.IOException;
importjava.nio.file.FileSystems;
importjava.nio.file.FileVisitResult;
importjava.nio.file.Files;
importjava.nio.file.Path;
importjava.nio.file.Paths;
importjava.nio.file.SimpleFileVisitor;
importjava.nio.file.StandardWatchEventKinds;
importjava.nio.file.WatchEvent;
importjava.nio.file.WatchEvent.Kind;
importjava.nio.file.WatchKey;
importjava.nio.file.WatchService;
importjava.nio.file.attribute.BasicFileAttributes;
importjava.util.HashMap;
importjava.util.Map;

/**
*文件夾監控
*
*@authorGoofy<ahref="http://www.xdemo.org/">http://www.xdemo.org/</a>
*@Date2015年7月3日上午9:21:33
*/
publicclassWatchDir{

;
privatefinalMap<WatchKey,Path>keys;
privatefinalbooleansubDir;

/**
*構造方法
*
*@paramfile
*文件目錄,不可以是文件
*@paramsubDir
*@throwsException
*/
publicWatchDir(Filefile,booleansubDir,FileActionCallbackcallback)throwsException{
if(!file.isDirectory())
thrownewException(file.getAbsolutePath()+"isnotadirectory!");

this.watcher=FileSystems.getDefault().newWatchService();
this.keys=newHashMap<WatchKey,Path>();
this.subDir=subDir;

Pathdir=Paths.get(file.getAbsolutePath());

if(subDir){
registerAll(dir);
}else{
register(dir);
}
processEvents(callback);
}

@SuppressWarnings("unchecked")
static<T>WatchEvent<T>cast(WatchEvent<?>event){
return(WatchEvent<T>)event;
}

/**
*觀察指定的目錄
*
*@paramdir
*@throwsIOException
*/
privatevoidregister(Pathdir)throwsIOException{
WatchKeykey=dir.register(watcher,StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_MODIFY);
keys.put(key,dir);
}

/**
*觀察指定的目錄,並且包括子目錄
*/
privatevoidregisterAll(finalPathstart)throwsIOException{
Files.walkFileTree(start,newSimpleFileVisitor<Path>(){
@Override
(Pathdir,BasicFileAttributesattrs)throwsIOException{
register(dir);
returnFileVisitResult.CONTINUE;
}
});
}

/**
*發生文件變化的回調函數
*/
@SuppressWarnings("rawtypes")
voidprocessEvents(FileActionCallbackcallback){
for(;;){
WatchKeykey;
try{
key=watcher.take();
}catch(InterruptedExceptionx){
return;
}
Pathdir=keys.get(key);
if(dir==null){
System.err.println("操作未識別");
continue;
}

for(WatchEvent<?>event:key.pollEvents()){
Kindkind=event.kind();

//事件可能丟失或遺棄
if(kind==StandardWatchEventKinds.OVERFLOW){
continue;
}

//目錄內的變化可能是文件或者目錄
WatchEvent<Path>ev=cast(event);
Pathname=ev.context();
Pathchild=dir.resolve(name);
Filefile=child.toFile();
if(kind.name().equals(FileAction.DELETE.getValue())){
callback.delete(file);
}elseif(kind.name().equals(FileAction.CREATE.getValue())){
callback.create(file);
}elseif(kind.name().equals(FileAction.MODIFY.getValue())){
callback.modify(file);
}else{
continue;
}

//ifdirectoryiscreated,andwatchingrecursively,then
//registeritanditssub-directories
if(subDir&&(kind==StandardWatchEventKinds.ENTRY_CREATE)){
try{
if(Files.isDirectory(child,NOFOLLOW_LINKS)){
registerAll(child);
}
}catch(IOExceptionx){
//ignoretokeepsamplereadbale
}
}
}

booleanvalid=key.reset();
if(!valid){
//移除不可訪問的目錄
//因為有可能目錄被移除,就會無法訪問
keys.remove(key);
//如果待監控的目錄都不存在了,就中斷執行
if(keys.isEmpty()){
break;
}
}
}
}

}

④ 怎樣採用java實現對系統進程的監控

http://blog.csdn.net/linzhanggeorge/article/details/4419801


SWT Win32 Extension 是Eclipse類庫SWT的Win32本地原生擴展.

本項目提供了一個軟體開發工具庫,能夠讓您使用Java語言開發原生的Windows應用程序而不需要編寫額外的JNI代碼。使用SWT Win32 Extension,您將不需要創建原生的動態鏈接庫來調用操作系統動態鏈接庫的系統API或者方法。您僅僅需要做的就是編寫Java代碼, SWT Win32 Extension來負責剩下的部分。SWT Win32 Extension提供了一系列的功能使您的應用程序看上去和Win32本機程序別無二致。


窗口裝飾功能:提供窗口置頂,透明,閃動等功能。
自定義窗口:創建不規則的窗口。
訪問Windows注冊表。
系統文件夾:獲取系統特殊文件加的路徑和圖標。
系統快捷方式:管理系統快捷方式。
系統相關信息:收集系統CPU,內存,環境變數等相關信息。
系統會話:提供關機,休眠,重啟,注銷等功能。
系統IO及網路功能:提供磁碟和網路相關信息。
活動桌面功能:管理Windows活動桌面。
系統鉤子:注冊和卸載系統鉤子,能夠攔截和處理系統事件。
窗口系統菜單:管理窗口菜單。用戶可以自定義系統菜單和處理菜單事件。
Ole 控制項:提供對一些常用控制項的封裝,比如flash。 值得一提的是,您能夠訪問SWT提供的所有功能,因為SWT Win32 Extension是從SWT派生出來的。

⑤ java如何監控 文件的讀取事件

變通一下,你可以在讀取的時候給這個文件做個標記,之後在操作標記的文件

⑥ 如何使用JDK自帶jvisualvm監控工具

1 啟動jvisualvm 首先到JDK安裝目錄/bin目錄下,雙擊jvisualvm.exe文件啟動
2 進入jvisualvm界面,右側為正在運行的Java程序,小編打開了一個jconsole程序來做示例
3 雙擊要監控的Java進行,有關監控進程的概要,監控,線程等信息都會以圖像的方式顯現出來,能更方便的對Java運行程序做分析
4 右鍵左邊欄,正在運行的Java程序,可以執行Dump,線程,Dump堆的操作並且可以將正在運行的程序進行快照儲備,同時可以設置在發生內存溢出時自動生成Dump文件。
5 右鍵【文件】-->【添加遠程主機】可對遠程運行的Java程序進行監控
6 菜單欄,工具-->插件 輔助功能 可以幫助我們更細致對Java程序進行監視分析,比如Visual GC 能顯示年輕代里的Eden區和survivor區的實時數據
7 Visualvm是一個非常實用的Java 監控工具,操作十分方便,多用幾次就會很快的入手啦。

⑦ java實時監控區域網共享文件夾並復制文件到指定位置

首先要保證電腦A和電腦B網路可到達
然後在java里用一個線程(死循環)一直「監控」電腦A里的共享文件夾的大小 只要一有變化就讓電腦A里的共享文件夾下的所有文件復制一份到電腦B的共享文件夾下 然後把電腦A里的共享文件夾下的文件刪除

⑧ java如何實現linux下實時監控文件是否有變化

java 的WatchService 類提供了一種方式可以檢查
try
{
WatchService watchService = FileSystems.getDefault()
.newWatchService();
Path path = Paths.get(pathName);
// 注冊監聽器
path.register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE);
while (true)
{
// 阻塞方式,消費文件更改事件
List<WatchEvent<?>> watchEvents = watchService.take()
.pollEvents();
for (WatchEvent<?> watchEvent : watchEvents)
{
System.out.printf("[%s]文件發生了[%s]事件。%n", watchEvent
.context(), watchEvent.kind());
}
}
}
catch (Exception e)
{
}

⑨ java如何實現對windows系統和Tomcat伺服器進行監控

可以實現,我試過,cpu、內存、磁碟空間等參數信息用C語言來寫一個DLL工程(extern "c"聲明),最好不要用C++寫,因為C++的導出函數會變名,然後java通過JNI規范調用C編寫的函數。
具體是先System.loadLibruary("dll名稱");
用C函數名,注意編譯DLL的時候需要java類的頭文件。cmd命令:javah Java類名。再直接調C函數。

⑩ java 調用shell腳本 其中shell腳本是個實時監控程序 監測文件變化

在後台,你可以調用java的時候,如果你的java程序調用的Test.class或Test.jar的

shell腳本來調用JAVA程序#! / bin / sh的

爪哇的Test.class##或Java的罐子Test.jar的

統計=`sqlplus中.......`

如果[$統計=「**」 】

使用nohup sh的single1.sh
殼順序也按順序執行,沒有回電話當Java是不會繼續向下 BR />如果你調用java程序在執行時,命令已經帶回來的符號,那麼這個命令在後台執行,shell會繼續執行下一個命令

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:333
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:374
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:609
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:30
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:105
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:940
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:736
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:800
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:507
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:369