日期:2014-05-17  浏览次数:20751 次

windows下java进程的管理技巧(转)
今天要说的是,当一台windows服务器上单独运行了多个java程序的话,如何进行更好的管理。



首先,是在windows下运行java程序的启动脚本:



Cmd代码 
java -classpath 需要加入classpath的内容列表,以分号分割 需要执行的程序.jar 
如:



Cmd代码 
java -classpath hello.properties hello.jar 
将其保存为startup.bat。

启动后,发现黑色的cmd框框一直讨厌的呆在那里,并且在进程管理器中查看该进程为java.exe。如果一台服务器上跑了很多个这样的进程后你就 会发现,不小心关闭这些cmd框框带来的后果是致命的,轻则服务中断,重则工资被扣。怎么去掉那个讨厌的cmd框框呢?也许用javaw可以解决问题。



Cmd代码 
javaw -classpath hello.properties hello.jar 
框框还在那里,但是关闭一下试试,嘿嘿,javaw.exe这个进程还在,看来是比刚才进步了哦。

那么如何自动关闭这个cmd框框呢?



Cmd代码 
start javaw -classpath hello.properties hello.jar 
在运行一次试试,HOHO,我们的目的打到了,启动后,cmd框框自动关闭了。



这个貌似是没有问题的,但是当你需要运行几个甚至十几个jar程序后,你会在进程管理器中发现长长的一排javaw.exe,根本无法监测某个进程消耗的资源,怎么来区别每一个javaw到底运行的是什么程序呢?

由于这些javaw都指向了%JAVA_HOME%\bin\javaw.exe,我们可以在javaw.exe上面动动脑筋。我们复制几个 javaw.exe文件在bin目录,将其中的一些改名为hello.exe,world.exe等等你需要显示在进程管理器中的名字,然后将启动脚本修 改为这样:



Cmd代码 
start C:\Progra~1\Java\jdk1.x.x_xx\bin\hello -classpath hello.properties hello.jar 
注意,Progra~1是替代Program Files的有效写法,表示Progra开头的第一个文件夹。如果你的JDK路径没有空格,也可以使用全路径代替。

这样改过之后,在进程管理器中会发现每个不同的java进程变成了hello.exe,world.exe了,这样可以方便的查看每个进程的资源占用情况,甚至是强行关闭这个进程了。



在Linux下,这个过程及其简单:



Cmd代码 
ps -fe|grep hello 
就看到了hello.jar这个进程了。



转自:http://ayuayufan.javaeye.com/blog/391154