這裡以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 列入運行服務, 完成配置.