1. 编写start.sh
解析
nohup java -Dfile.encoding=GBK -Xmx3000M -cp ./lib/PrdCommon.jar:./lib/PrjTrade.jar com.ylink.TradeServer >output.log 2>&1 &
tail -f output.log
说明:
1)nohup代表忽略hup挂起信号,即不挂起
2)java代表启动java程序的java命令
3)-Dfile.encoding=GBK代表设置JVM字符集为GBK
4)-Xmx3000M代表设置最大堆内存为3000M
5)-cp代表-classpath 后面跟的是Java程序运行所依赖的jar包
6)com.ylink.TradeServer 代表指定Java程序的主方法入口
7)>output.log代表将标准输出重定向到output.log
8)2>&1代表将标准错误重定向到标准输出
9)&代表程序将在后台运行
综合:初始化堆内存最大值为3000M,启动并后台运行依赖某某jar包,并以TradeServer为主类的Java程序.
2. 杀死项目再重启项目
- 查看服务器端口使用情况
netstat -ntlp- kill -9 pid
编写重启脚本 killandstart.sh
#查找该端口的进程信息,并将第二列的进程号赋给ID
ID=`lsof -i:9086 |grep java |awk '{print $2}'`
echo $ID
kill -9 $ID
echo "kill success!"
nohup java -jar netdemo.jar & tailf nohup.out
echo "restart success"
3. 编写stop.sh
server_name=QuoteServer
echo ******stop $server_name begin******
#find the pid of server_name
str=$(ps -ef|grep $server_name|grep -v "grep"|awk '{printf$2}')
kill -9 $str
if [ "$?" -eq 0 ];then
echo kill $server_name Success,pid=$str
else
echo kill $server_name Failed,pid=$str
fi
echo ******stop $server_name end******
1)定义服务名称变量,后续会据此查找服务对应的Java进程号pid;
2)使用e’cho进行脚本执行过程提示;
3)使用ps -ef|grep $server_name查到关键字位服务名称的Java进程
4)|grep -v “grep” 表示屏蔽grep进程
5)|awk ‘{printf$2}’ 表示从查询出的Java进程信息中取出第二位的进程号信息,pid在ps -ef结果的第二列
6)将进程号赋值给str变量
7)使用kill -9 $str,kill掉指定服务的Java进程
8)根据kill的执行返回结果,利用echo显示执行成功或失败的结果及进程号信息.
综合:先找到指定服务的进程号,然后kill掉,最后根据执行结果输出执行成功或失败的提示.
原文链接:https://blog.csdn.net/u010425839/article/details/106210217