将java程序成为linux的系统服务

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在分布式环境开发中经常会使用socket,或者使用rmi来对外提供服务,常用的办法是将写一个java代码,然后部署到服务器上,但是问题来了。如何将这个服务成为一个可靠的系统服务,不会应为风吹草动就挂了,那就不好了。 所以想到使用apache commons 下面的daemon框架来充当守护进程。首

在分布式环境开发中经常会使用socket,或者使用rmi来对外提供服务,常用的办法是将写一个java代码,然后部署到服务器上,但是问题来了。如何将这个服务成为一个可靠的系统服务,不会应为风吹草动就挂了,那就不好了。

所以想到使用apache commons 下面的daemon框架来充当守护进程。首先需要在系统中安装jsvc工具具体操作方法这里不作详细说明,请查看 http://commons.apache.org/daemon/jsvc.html

最后jsvc安装成功之后需要有执行 jsvc -help 会显示以下内容:

Python代码

  1. ./jsvc -help  
    Usage: jsvc [-options] class [args...]  
      
    Where options include:  
      
        -help | --help | -?  
            show this help page (implies -nodetach)  
        -jvm <JVM name>  
            use a specific Java Virtual Machine. Available JVMs:  
                'client' 'server'  
        -client  
            use a client Java Virtual Machine.  
        -server  
            use a server Java Virtual Machine.  
        -cp / -classpath <directories and zip/jar files>  
            set search path for service classes and resouces  
        -home <directory>  
            set the path of your JDK or JRE installation (or set  
            the JAVA_HOME environment variable)  
        -version  
            show the current Java environment version (to check  
            correctness of -home and -jvm. Implies -nodetach)  
        -showversion  
            show the current Java environment version (to check  
            correctness of -home and -jvm) and continue execution.  
        -nodetach  
            don't detach from parent process and become a daemon  
        -debug  


另外需要编写一个shell脚本,来控制该系统服务启动或者停止,详细请操作如下脚本:

Python代码

  1. #!/bin/bash  
      
      
    CLASSPATH=./trigger-server/terminator-job-trigger-server-3.1.0-SNAPSHOT.jar  
      
    for P in `ls -F ./trigger-server/dependency/`  
    do  
     CLASSPATH=$CLASSPATH:./trigger-server/dependency/$P  
    done  
      
      
    #echo $CLASSPATH  
      
    export JAVA_HOME=/opt/taobao/java  
      
      
      
    start(){  
       echo "starting"   
      
      
       /home/baisui/commons-daemon-1.0.10-native-src/unix/jsvc  -pidfile ./pidfile.pid -outfile ./logs/trigger_server_out.log -errfile ./logs/trigger_server_err.log  -cp $CLASSPATH com.taobao.terminator.trigger.LaunchServer  
      
      
      
       echo "start successful"  
    }  
      
    stop(){  
     /home/baisui/commons-daemon-1.0.10-native-src/unix/jsvc -stop -pidfile ./pidfile.pid -cp $CLASSPATH com.taobao.terminator.trigger.LaunchServer  
      
     echo "trigger_server stopped"  
    }  
      
      
      
      
    case "$1" in  
        start)  
            start  
        ;;  
        stop)  
            stop  
        ;;  
        restart)  
            stop  
            start  
        ;;  
        *)  
            usage  
        ;;  
    esac       


 

这样可以使用一下脚本来控制系统服务的状态了:

  1. sh start.sh start 启动服务
  2. sh start.sh stop  停止服务
  3. sh start.sh restart 重启服务
相关文章
|
4天前
|
运维 Java
Java版HIS系统 云HIS系统 云HIS源码 结构简洁、代码规范易阅读
云HIS系统分为两个大的系统,一个是基层卫生健康云综合管理系统,另一个是基层卫生健康云业务系统。基层卫生健康云综合管理系统由运营商、开发商和监管机构使用,用来进行运营管理、运维管理和综合监管。基层卫生健康云业务系统由基层医院使用,用来支撑医院各类业务运转。
23 5
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
28 3
|
1天前
|
监控 安全 Linux
Linux系统之安装ServerBee服务器监控工具
【4月更文挑战第22天】Linux系统之安装ServerBee服务器监控工具
32 2
|
1天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制
|
1天前
|
Java Shell Linux
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
|
1天前
|
Java Linux Shell
【Linux】bash: /home/stefan/jdk1.7.0_55/bin/java: /lib/ld-linux.so.2: bad ELF interpreter
【Linux】bash: /home/stefan/jdk1.7.0_55/bin/java: /lib/ld-linux.so.2: bad ELF interpreter
5 0
|
1天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
13 0
|
1天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
3 0
|
2天前
|
Linux 开发工具 C语言
Linux 安装 gcc 编译运行 C程序
Linux 安装 gcc 编译运行 C程序
15 0
|
2天前
|
资源调度 JavaScript Ubuntu
Linux系统之部署briefing视频聊天系统
【4月更文挑战第21天】Linux系统之部署briefing视频聊天系统
37 2