zoukankan      html  css  js  c++  java
  • Linux安装jsvc,及Linux服务开发

    在linux上以服务的方式启动java程序,需要提前安装jsvc。linux是利用daemon(jsvc)构建java守护进程。

    编译 daemon 安装JSVC

    1 下载文件,http://commons.apache.org/daemon/jsvc.html
      commons-daemon-1.1.0-native-src.tar.gz
    2 编译:解压文件到linux,进入其子目录 'unix',执行如下命令(如有必要执行chmod +x ./*)
      # ./configure --with-java=/usr/java         # 附带JDK(JAVA_HOME)路径
      #注:如果环境变量JAVA_HOME已经设置正确,就可以直接运行configure
      # ./configure
      # make                     #编译生成了可执行的文件 jsvc (在源文件目录的'unix目录下')

    编译jsvc包

    1.安装jsvc,在tomcat的bin目录下有一个jsvc.tar.gz的文件,上传jsvc.tar.gz 文件包

      #tar xvfz jsvc.tar.gz
      #cd jsvc-src
      #sh support/buildconf.sh
      #chmod 755 configure            #已安装JDK
      #./configure --with-java=/usr/local/java      #手动配置JDK参数
      #注:如果环境变量JAVA_HOME已经设置正确,就可以直接运行configure
      #make

      开发Linux系统服务,首先需要实现org.apache.commons.daemon.Daemon接口,服务在启动时会先调用 init(String[] args) 方法然后调用 start() 方法,在服务停止是会首先调用 stop() 方法,然后调用 destroy() 方法.
      1.将程序打包成 testjsvc.jar 放到/opt目录下
      2.编写启动服务脚本testjsvc(红色的修改参数)

    #! /bin/sh
    #Desc:  Daemon Service for testjsvc
    NAME="testjsvc"
    DESC="Daemon Service for TestJSVC"
    #jdk的安装目录
    JAVA_HOME="/usr/java/jdk1.8.0_191"
    #jsvc所在的目录
    JSVC="/opt/testjsvc/jsvc"
    #pid文件目录
    PID_FILE="jsvc.pid"
    PID_PATH="/var/run/testjsvc"
    PID=$PID_PATH/$PID_FILE
    TMP_DIR=/var/tmp
    #启动日志输出文件路径
    LOG_FILE="/opt/testjsvc/logs/startup.log"
    #应用程序的目录和路径
    SCOREMARKER_PATH="/opt/testjsvc"
    SCOREMARKER_JAR="/opt/testjsvc/testjsvc.jar"
    #应用程序依赖包目录
    CLASS_PATH="$SCOREMARKER_JAR:$(echo $SCOREMARKER_PATH/lib/*.jar | tr ' ' ':')"
    CLASS="com.zsm.daemon.TestJSVCMain"
    #程序用户
    JSVC_USER=root
    OPTION=$1
    
    execute_jsvc(){
        svc -cp $CLASS_PATH -home $JAVA_HOME -user $JSVC_USER -Djava.io.tmpdir=$TMP_DIR -wait 3 -outfile $LOG_FILE -errfile $LOG_FILE -pidfile $PID $1 $CLASS
    }
    
    case "$OPTION" in
        start)
            echo "Starting $DESC.."
            echo "$(date): Starting $DESC.." >> $LOG_FILE
            execute_jsvc
            echo "The $DESC has started"
            echo $!
        ;;
        stop)
            echo "Stoping $DESC.."
            echo "$(date): Stoping $DESC.." >> $LOG_FILE
            execute_jsvc "-stop"
            echo "The $DESC has stoped"
        ;;    
        restart)
            if [ -f "$PID" ]; then
                echo "Restarting $DESC.."
                echo "$(date): Restarting $DESC.." >> $LOG_FILE
                execute_jsvc "-stop"
                execute_jsvc
                echo "The $DESC has restarted" 
                echo "The $DESC is not restarted" >> $LOG_FILE
                echo $!
            else
                echo "The $DESC is not running, no action taken"
                exit 1
            fi
        ;;
        status)
            if [ -f "$PID" ]; then
                echo "The $DESC is running"
            else
                echo "The $DESC is not running"
            fi            
        ;;
        *)
            echo "Usage: /etc/init.d/$NAME {start|stop|restart|status}" >&2
            exit 3
        ;;
    esac

      3.把 testjsvc 文件拷贝到 /etc/init.d/ 目录下,添加到启动服务里面去.
      #chmod -c 777 /etc/init.d/testjsvc               #赋予执行权限

      #chkconfig --add testjsvc                   #添加服务

      #chkconfig --level 345 testjsvc on               #设置服务的启动级别

      #service testjsvc start                   #启动服务,并且在系统重启时会自动启动myjsvc服务

     

  • 相关阅读:
    hdu 4027 Can you answer these queries?
    hdu 4041 Eliminate Witches!
    hdu 4036 Rolling Hongshu
    pku 2828 Buy Tickets
    hdu 4016 Magic Bitwise And Operation
    pku2886 Who Gets the Most Candies?(线段树+反素数打表)
    hdu 4039 The Social Network
    hdu 4023 Game
    苹果官方指南:Cocoa框架(2)(非原创)
    cocos2d 中 CCNode and CCAction
  • 原文地址:https://www.cnblogs.com/zengming/p/10180047.html
Copyright © 2011-2022 走看看