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

posted on 2013-11-08 16:33  关攀攀  阅读(266)  评论(0)    收藏  举报

导航