注册程序为Linux系统服务并设置成自启动


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

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

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

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

内容如下:

  1. #!/bin/sh  
  2. # chkconfig: 35 99 1  
  3. #  
  4. # description: ERP service  
  5. #  
  6.   
  7.   
  8. ERP_HOME=/data/falconprobuf  
  9.    
  10.   
  11. RETVAL=0  
  12.   
  13. ERP_PORT=8099  
  14.    
  15.   
  16. # start and stop functions  
  17.   
  18. start() {  
  19.   
  20.     pids=`netstat -lnp | grep $ERP_PORT |awk '{print $7 }'`  
  21.     pids=${pids%/*}  
  22.     if [ -n "$pids" ]; then  
  23.       
  24.          echo  "ERP SERVICE ALREADY START "  
  25.     else  
  26.      echo "START ERP SERVICE "  
  27.     
  28.         cd $ERP_HOME  
  29.     
  30.         ./startup.sh &    
  31.   
  32.         echo  
  33.   
  34.     fi  
  35.       
  36.      
  37. }  
  38.   
  39.    
  40.   
  41. stop() {  
  42.   
  43.       
  44.      pids=`netstat -lnp | grep $ERP_PORT |awk '{print $7 }'`  
  45.      pids=${pids%/*}  
  46.     if [ -n "$pids" ]; then  
  47.     echo  "STOP ERP SERVICE "  
  48.             kill -9 $pids  
  49.     echo  "STOP ERP SUCCESS "  
  50.      else  
  51.     echo  "ERP SERVICE ALREADY STOP "  
  52.   
  53.     fi  
  54.       
  55.   
  56. }  
  57.   
  58.    
  59.   
  60. # See how we were called.  
  61.   
  62. case "$1" in  
  63.   
  64.   start)  
  65.   
  66.         start  
  67.   
  68.         ;;  
  69.   
  70.   stop)  
  71.   
  72.         stop  
  73.   
  74.         ;;  
  75.   
  76.   restart)  
  77.   
  78.         stop  
  79.   
  80.         sleep 2          
  81.   
  82.         start  
  83.   
  84.         ;;  
  85.   
  86.   *)  
  87.   
  88.         echo "Usage: $0 {start|stop|restart}"  
  89.   
  90.         exit 1  
  91.   
  92. 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 列入运行服务,   完成配置.

相关内容