windows Linux下Java程序的启动Shell脚本
2017-04-19 10:25
429 查看
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
b15f
let i++;
done
Main是JBoss的主类名。
简单的:
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
b15f
let i++;
done
Main是JBoss的主类名。
相关文章推荐
- 【Shell】 Linux下启动java程序的通用脚本sh
- shell脚本启动java程序
- Linux下Java程序的启动shell脚本
- Shell 脚本启动java程序
- Linux下Java程序的启动shell脚本
- Linux(Ubuntu)下设置开机启动shell脚本执行Java程序jar包
- linux下shell脚本启动java程序jar包
- 利用脚本启动java程序
- 脚本启动java 程序windows +lin...
- 利用脚本启动java程序
- 程序启动脚本 shell
- Linux下启动java程序的通用脚本sh
- Java后台执行Shell脚本, Java方法不用等待Shell程序执行完成并保证关掉Java程序Shell脚本正常运行
- 在java程序中如何调用linux的命令?如何调用shell脚本呢?
- 利用脚本启动java程序
- 编写启动程序和停止程序的shell脚本
- Java程序启动脚本(windows下的bat和linux下的sh)java applicat...
- 如何启动Java应用的Shell脚本
- sh脚本启动java程序
- 防止同一个Java应用重复启动的shell脚本