注册程序为Linux系统服务并设置成自启动
注册程序为Linux系统服务并设置成自启动
这里以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 列入运行服务, 完成配置.
评论暂时关闭