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

 

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

 


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


 如:

 


java -classpath hello.properties hello.jar


 将其保存为startup.bat。

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

 


javaw -classpath hello.properties hello.jar


 框框还在那里,但是关闭一下试试,嘿嘿,javaw.exe这个进程还在,看来是比刚才进步了哦。

那么如何自动关闭这个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等等你需要显示在进程管理器中的名字,然后将启动脚本修改为这样:

 


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下,这个过程及其简单:

 


ps -fe|grep hello


 就看到了hello.jar这个进程了。