1.shell脚本
#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
confpath=$basepath/../conf
logpath=$basepath/../logs
libpath=$basepath/../lib
pidfile=$basepath/../run/app.pid
prog="app"
RETVAL=0
is_systemd=`pstree -p | head -1 | grep 'systemd(1)' -q && echo 1 || echo 0`
app_arg=$2
CLASSPATH=.:$confpath:$JAVA_HOME/lib/*
for f in `ls $confpath`; do
CLASSPATH=$CLASSPATH:$confpath/$f
done
for f in `ls $libpath`; do
CLASSPATH=$CLASSPATH:$libpath/$f
done
local_checkpid(){
if [ -f $pidfile ]; then
echo "$prog pid is exists"
return 0
else
return 1
fi
RETVAL=$?
}
start() {
local_checkpid
if [ $? != 0 ]; then
java -cp $CLASSPATH -Xms1g -Xmx5g -XX:+UseG1GC com.paic.app.App $app_arg > $logpath/app.`date +%Y-%m-%d`.log 2>&1 &
echo $! > $pidfile
else
echo "$prog is already running"
exit 0
fi
RETVAL=$?
}
stop(){
local_checkpid
if [ $? == 0 ]; then
local pid=`cat $pidfile`
kill -9 ${pid}
rm -f $pidfile
echo "$prog is stopped"
else
echo "$prog is already stopped"
exit 0
fi
RETVAL=$?
}
restart() {
stop
if [ $? != 0 ]; then
return 1
fi
start
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
if [ $is_systemd -eq 1 ]; then
echo $"Usage: $prog {start|stop|restart}"
else
echo $"Usage: $prog {start|stop|restart}"
fi
RETVAL=3
esac
exit $RETVAL
2.服务器部署目录
app
|-- bin
|-- conf
|-- run
|-- logs