26. linix脚本启动java程序
(1)linux脚本文件:
1 #!/bin/bash 2 3 export JAVA_HOME=/opt/jdk1.6.0_21 4 export PATH=$JAVA_HOME/bin:$PATH 5 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 6 baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd) 7 LIB_CP=:""$baseDirForScriptSelf""/WEB-INF/classes 8 flist=$baseDirForScriptSelf""/WEB-INF/lib/*.jar; 9 for i in $flist; 10 do 11 LIB_CP=$LIB_CP":"$i; 12 done 13 export LIB_CP 14 15 CP=${CLASSPATH}${LIB_CP} 16 17 java -cp ${CP} -Xms1024m -Xmx1024m com.jd.sns.dt.main.DtMain
DtMain当中只要有main函数就行
(2)定时执行
如果程序需要定时启动,可以利用linux本身的定时脚本来做。在命令端输入crontab -e,加入定时调用,每5分钟执行一次。本情况只适用于实时性不高的情景,如果实时性要求高,需要使用线程轮询。
*/5 * * * * /opt/consumegradesql/run_add.sh
如果需要定时执行,要考虑是否加入防止重复执行的相关代码,可以采用绑定端口的方法,例:
在程序代码开始时调用:SocketUtil.bindPort();
1 package com.jd.sns.dc.common; 2 3 import java.io.IOException; 4 import java.net.ServerSocket; 5 6 import org.slf4j.Logger; 7 import org.slf4j.LoggerFactory; 8 9 public class SocketUtil { 10 11 protected final static Logger log = LoggerFactory.getLogger(SocketUtil.class); 12 private static ServerSocket serverSocket; 13 14 public static void bindPort() { 15 log.info("port:" + DcConst.port); 16 try { 17 // 绑定端口,若绑定失败则退出程序 18 SocketUtil.serverSocket = new ServerSocket(DcConst.port); 19 } catch (Exception e) { 20 log.error("Bind port:" + DcConst.port + " error!", e); 21 System.exit(1); 22 } 23 } 24 25 public static void closeSocket() { 26 try { 27 SocketUtil.serverSocket.close(); 28 } catch (IOException e) { 29 log.error("close socket error", e); 30 } 31 } 32 33 }
附:linux端口号
1--1023 系统保留,只能由root用户使用
1024---4999 由客户端程序自由分配
5000---65535 由服务器端程序自由分配
注:本示例来源于datacheck-final
减少重复学习,在原来掌握的基础上进行提高。质疑驱动,不断对已经掌握的知识进行质疑。
如果能把已经掌握的东西总结成模式,才是真正掌握了。
浙公网安备 33010602011771号