1.创建jar包启动、停止、重启脚本(例如:mall-uc.sh)
name="服务标识"
Xmx=xxxm
Xms=xxxm
Xmn=xxxm
PermSize=xxxm
MaxPermSize=xxxm
pid="进程文件存放位置"
jarName="jar包路径"
start(){
if [ -f "$pid" ]
then
echo "$jarName is running !"
exit 0;
else
echo -n "start ${jarName} ..."
nohup <JDK安装路径>/bin/java -Xmx${Xmx} -Xms${Xms} -Xmn${Xmn} \
-XX:PermSize=${PermSize} \
-XX:MaxPermSize=${MaxPermSize} \
-XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC \
-XX:CMSFullGCsBeforeCompaction=3 \
-XX:CMSInitiatingOccupancyFraction=60 -jar ${jarName} >/dev/null 2>&1 & #注意:必须有&让其后台执行,否则没有pid生
[ $? -eq 0 ] && echo "[ok]"
echo $! > ${pid} # 将jar包启动对应的pid写入文件中,为停止时提供pi
fi
}
#停止方法
stop(){
echo -n "stop $name ..."
if [ -f "$pid" ]
then
PID=$(cat ${pid})
kill -9 $PID
[ $? -eq 0 ] && echo "[ok]"
rm -fr $pid
else
echo "[ok]"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
printf 'Usage: server.sh { start|stop|restart}\n'
exit 1
;;
esac
2.根据上述脚本文件得到服务启动、停止、重启脚本为:
启动:mall-uc.sh start
停止:mall-uc.sh stop
重启:mall-uc.sh restart
3.创建服务
切换路径到/usr/lib/systemd/system
,然后创建文件mall-uc.service
[Unit]
Description=e2pai-mall-uc
After=syslog.target network.target
[Service]
ExecStart=/bin/sh 脚本路径(mall-uc脚本路径) start
ExecReload=/bin/sh 脚本路径(mall-uc脚本路径) restart
ExecStop=/bin/sh 脚本路径(mall-uc脚本路径) stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
4.测试服务
首先执行systemctl daemon-reload
重载服务,然后分别执行
启动:systemctl start mall-uc.service
停止:systemctl stop mall-uc.service
重启:systemctl restart mall-uc.service
5.将服务加入开机自启队列
systemctl enable mall-uc.service