当前位置:首页 » 编程语言 » 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会继续执行下一个命令

热点内容
新建文件夹2免费手机 发布:2024-05-18 12:56:13 浏览:363
自己在家搭建服务器有水冷散热吗 发布:2024-05-18 12:47:27 浏览:648
旧版的安卓手机怎么使用微信 发布:2024-05-18 12:46:36 浏览:466
我的世界服务器开多久 发布:2024-05-18 12:45:32 浏览:592
vba获取网页表格数据库数据库数据库 发布:2024-05-18 12:23:24 浏览:699
腾讯服务器为什么卡顿 发布:2024-05-18 12:02:12 浏览:305
如何知道密码锁有没有nfc 发布:2024-05-18 11:58:09 浏览:961
单片机c语言模块化编程 发布:2024-05-18 11:53:16 浏览:644
win7xp共享打印机拒绝访问 发布:2024-05-18 11:51:00 浏览:847
zkeys金属服务器怎么使用 发布:2024-05-18 11:49:31 浏览:581