我是靠谱客的博主 细心猎豹,最近开发中收集的这篇文章主要介绍linux shell 启动java程序,Linux下Java程序的启动shell脚本,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java程序多数情况下都会用到一些第三方的类库,如果仅用到几个jar文件,写到java命令里就好,但是依赖的jar文件很多的情况,写到java命令里就不好了,而且如果jar文件被替换,名字变了,就需要改java命令,所以最好在启动命令里不出现jar文件名。假设程序依赖的类库jar文件存放在同级的lib目录下,

简单的:

java -Djava.ext.dirs=lib -Djava.library.path=lib com.myapp.MyAppClass $*

这个写法绝大部分情况下都是正确有效的,但是曾经在启动一个用Spring框架写的程序时失败,总报告某些类找不到,实际上都已在lib目录下,原因不明。

下面换个方法,把依赖的jar文件都加入环境变量CLASSPATH,并且前面还增加了程序是否已启动的检查。

#!/bin/sh ############## #判断是否程序已启动 jappname='MyAppClass' javaps=`jps` i=0 psid=0 for psresult in $javaps do let cur=i%2 if [ $cur -eq 0 ]; then psid=$psresult else if (test "$psresult" = "$jappname") then echo "程序"$jappname"[pid="$psid"]已经启动!" exit 0 fi fi let i++; done #引入依赖类库到类路径 export CLASSPATH=. pathtmp='' for jarpath in `ls lib/*.jar` do CLASSPATH=$CLASSPATH:$jarpath done export CLASSPATH=$CLASSPATH java -server com.myapp.MyAppClass $*

附带一个关闭大量Java进程的脚本

服务器上部署的有JBoss和十几个Java程序,测试时经常需要把这十几个Java程序重启一遍,把Java进程全kill掉的话,JBoss也会被杀掉,但是JBoss不需要重启,一个一个用ps命令找pid,再挨个kill?程序太多,无法忍受。JDK里有个小工具叫jps,可以列出当前的Java进程,利用这个jps写了一个杀掉除指定进程之外的所有Java进程的shell脚本。

##################### #!/bin/sh # kill all java applications ##################### javaps=`jps` i=0 psid=0 for psresult in $javaps do let cur=i%2 if [ $cur -eq 0 ]; then psid=$psresult else if (test "$psresult" = "Main" -o "$psresult" = "Jps") then echo $psresult" not to be killed." else echo "kill "$psresult kill $psid fi fi let i++; done

Main是JBoss的主类名

引自:http://www.iteye.com/topic/411771

最后

以上就是细心猎豹为你收集整理的linux shell 启动java程序,Linux下Java程序的启动shell脚本的全部内容,希望文章能够帮你解决linux shell 启动java程序,Linux下Java程序的启动shell脚本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部