这里以red hat linux 为例,   设置某个JAVA程序为系统服务, 通过service命令进行管理, 并跟随系统自行启动.

 

1.  先将自己的程序写入SH脚本, 便于管理.

如: java -server -cp .:./lib/* com.test.Startup 

 

2. 进入/etc/init.d目录, 新建文件, 以自己的程序命名, 如: erp

内容如下:

#!/bin/sh
# chkconfig: 35 99 1
#
# description: ERP service
#


ERP_HOME=/data/falconprobuf
 

RETVAL=0

ERP_PORT=8099
 

# start and stop functions

start() {

    pids=`netstat -lnp | grep $ERP_PORT |awk '{print $7 }'`
    pids=${pids%/*}
    if [ -n "$pids" ]; then
	
         echo  "ERP SERVICE ALREADY START "
    else
	 echo "START ERP SERVICE "
  
        cd $ERP_HOME
  
        ./startup.sh &	

        echo

    fi
	
   
}

 

stop() {

    
     pids=`netstat -lnp | grep $ERP_PORT |awk '{print $7 }'`
     pids=${pids%/*}
    if [ -n "$pids" ]; then
	echo  "STOP ERP SERVICE "
            kill -9 $pids
	echo  "STOP ERP SUCCESS "
     else
	echo  "ERP SERVICE ALREADY STOP "

    fi
    

}

 

# See how we were called.

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart)

        stop

        sleep 2        

        start

        ;;

  *)

        echo "Usage: $0 {start|stop|restart}"

        exit 1

esac


① 注意第二行: # chkconfig: 35 99 1
这个需要加上, 因为后面要设置成自启动方式.
② ./startup.sh &

加上&, 挂入后台运行, 不会影响当前的连接会话.

这里没有使用全路径,  因为执行脚本里面使用了相对路径, 会找不到相应的JAR包,

解决办法是先跳入目录, cd $ERP_HOME, 再执行脚本.

③ERP_PORT=8099
设置端口, 通过端口过滤的方式来结束程序, 会更为准确, 不会干扰其他的程序运行.

 

 

3. 确认服务文件的执行权限,  执行chmod +x erp  不需重启, 这时可通过SERVCE start|stop|restart 方式进行服务管理.

最后执行chkconfig --add erp 列入运行服务,   完成配置.

 
 

Logo

更多推荐