场景:jar包为例,war包是类似的;一个目录中只有一个jar包,需要在jar包的同级目录下,一个脚本实现jar包的启停管理。
如有其他场景需要方法,请留言。
#!/bin/bash # 下面一行是先获取当前路径,惯用写法 work_dir=$(cd `dirname $0`; pwd) # 判断jar包,当前目录下只能有一个jar包存在,如果不是则报错 jar_num=`ls ${work_dir}/*.jar | wc -l` if [ ${jar_num} -eq 0 ];then echo "Error: Can not find jar package in this jar home;please check!" exit 1 elif [ ${jar_num} -gt 1 ];then echo "Error: Find other jar package in this jar home; please check!" exit 1 fi jar_name=`ls ${work_dir}/*.jar`
# 下面内容是服务执行部分 case "$1" in start) cd ${work_dir}
# jar启动命令,可根据实际情况修改 nohup java -Xms1024m -Xmx1024m -jar ${jar_name} >/dev/null 2>&1 & sleep 3 echo "service ${jar_name} start" ;; stop)
# 获取jar包的pid;以下是centos7的写法;其他操作系统可自行定义 svc_pid=`ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}'` len_pid=`echo ${svc_pid}|wc -c` if [ ${len_pid} -le 2 ];then echo "No need stop service ${jar_name}" else kill -9 ${svc_pid} sleep 3 echo "service ${jar_name} stopd" fi ;; restart) $0 stop sleep 2 $0 start ;; *) ## restart $0 stop sleep 2 $0 start ;; esac
使用方法:
将上面的内容写到脚本文件,如boot.sh
启动:[脚本路径]/boot.sh start
重启:[脚本路径]/boot.sh restart 或者:[脚本路径]/boot.sh
停止:[脚本路径]/boot.sh stop