程序是服务端的程序,需要通过java调用.sh文件来完成对服务端程序的重启. 服务端程序向外部提供接口,外部程序调用接口完成对服务器的重启操作. 那位做过的给个代码示例. 服务器启动通过./startup.sh启动,本来想写一个restart.sh的脚本,通过java调用来重启,无奈linux入门级,请帮忙,100分送上.
解决方案 »
- mxGraph中点击某个mxCell怎么跳转到另一个页面并传递参数?
- 计算机图形学难搞啊,不学行不!?
- 很easy的plsql
- jsp问题,我不知道怎么搞了,突然秀逗了
- 从unix用文件输出流形式下载文件到windows的问题
- 关于jsp网站开发的问题?
- 程序出现“org.apache.jasper.JasperException: ResultSet is closed”,高手请进!!!!
- MSSQL操作中的一个问题,怎么和青春豆一样令人恼火呢?
- jsp修改员工资料页面无法用jquery抓到节点
- [学习资料]Flex 4.6+ActionScript 3.0实战
- java就业面试题(大家来参考,帮助我的同时,也是在测试自己。)
- 如何用JS写个删除前的提示框?
Process pro = run.exec("restart.sh");
pro.waitFor();
/usr/local/restart.sh
#!/bin/bash
java -Xms512m -Xmx1024m -classpath lib/antlr-2.7.6.jar:lib/commons-collections-3.2.jar:lib/jta.jar ...... xx.MainClass%1 %2
java -cp "$CLASSPATH" xx.MainClass> console.log & echo $! > MainClass.pid &
MainClass是我服务器的启动入口main所在的类.
脚本也是看到网上其他朋友写的,这个脚本在服务器启动的同时将pid写到MainClass.pid中下面的是restart.sh脚本
#!/bin/bash
cat MainClass.pid | xargs kill -9
java -Xms512m -Xmx1024m -classpath lib/antlr-2.7.6.jar:lib/commons-collections-3.2.jar:lib/jta.jar ...... xx.MainClass%1 %2这个脚本就是先关闭pid为MainClass.pid的进程
然后再启动.
问题是在服务器启动后,利用ps -aux查看进程,没有发现MainClass.pid的值
java.exe的pid是另外一个值...
跟Java不是一个是正常的。
而且,系统的进程值是根据运行情况不同所变化的。
在Linux下取得正在运行Java程序的进程ID,
写一个shell应该是最简单的。
和同事商量后,决定还是不去用系统的方法,问题在java里面解决.
将启动和停止放在不同的interface
服务启动时,调用停止服务器的RMI服务.
服务停止后,调用启动服务器的RMI服务.启动服务直接Runtime.getRuntime().exec("./startup.sh")完成...
startup.sh里面同时运行两个rmi服务...
退出java程序直接使用System.exit(0)完成.