Shell–案例–03–java包启动脚本
1、jar包
1.1、脚本
vi /root/test/app_jar.sh
内容
#!/bin/bash
#
# jar 脚本,有启动,重启,停止功能
#
#
# jvm 参数
jvm_xms=-Xms512m
jvm_xmx=-Xmx512m
# jar 名称
jar_name=app.jar
# jar 目录
jar_dir=/root/test
# debug 参数
debug_param="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
# 进程id
pid=
# 启动
start() {
# 获取进程id
getpid
# 如果进程id存在,且对应的文件夹也存在
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
echo "$jar_name 正在运行,进程id是 $pid"
else
echo "启动:$jar_name"
nohup java -server $jvm_xms $jvm_xmx -jar $jar_dir/$jar_name > /dev/null 2>&1 &
fi
}
# 启动
debug() {
# 获取进程id
getpid
# 如果进程id存在,且对应的文件夹也存在
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
echo "$jar_name 正在运行,进程id是 $pid"
else
echo "启动:$jar_name"
nohup java $debug_param -server $jvm_xms $jvm_xmx -jar $jar_dir/$jar_name > /dev/null 2>&1 &
fi
}
# 停止
stop() {
# 获取进程id
getpid
# 如果进程id存在,且对应的文件夹也存在
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
# 杀死进程id
kill -KILL $pid >/dev/null 2>&1
# 睡眠10秒,单位微秒
usleep 100000
echo "$jar_name 已停止"
else
echo "$jar_name 未运行"
fi
}
# 重启
restart() {
stop
start
}
# 进程id函数,获取进程id
getpid() {
pid=`ps -ef|grep "$jar_dir/$jar_name"|grep -v grep|awk '{print $2}'`
}
# 启动参数
case "$1" in
start)
echo "------------------------执行启动------------------------"
start
;;
stop)
echo "------------------------执行停止------------------------"
stop
;;
debug)
echo "------------------------执行debug启动------------------------"
debug
;;
restart)
echo "------------------------执行重启------------------------"
stop
start
;;
status)
echo "------------------------执行查看------------------------"
getpid
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
echo "$jar_name 正在运行,进程id是 $pid"
else
echo "$jar_name 已停止"
fi
;;
*)
echo $"参数提示: $0 {start|debug|stop|restart|status}"
esac
1.2、授权
chmod +x /root/test/app_jar.sh
1.3、测试
./app_jar.sh restart
./app_jar.sh status
./app_jar.sh stop
./app_jar.sh status
./app_jar.sh start
2、war包
#!/bin/bash
#
# jar 脚本,有启动,重启,停止功能
#
#
# jvm 参数
jvm_xms=-Xms6144m
jvm_xmx=-Xmx6144m
# 应用名称
app_name=appTest
# app 目录
app_dir=/home/hd/appTest/appTest-boot
# app 上级目录
app_pre_dir=/home/hd/appTest/
# debug 参数
debug_param="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
# 进程id
pid=
# 启动
start() {
# 获取进程id
getpid
# 如果进程id存在,且对应的文件夹也存在
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
echo "$app_name 正在运行,进程id是 $pid"
else
echo "启动:$app_name"
cd $app_pre_dir ; nohup java $jvm_xms $jvm_xmx -Djava.awt.headless=true -cp $app_dir org.springframework.boot.loader.WarLauncher >/dev/null 2>&1 &
fi
}
# 启动
debug() {
# 获取进程id
getpid
# 如果进程id存在,且对应的文件夹也存在
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
echo "$app_name 正在运行,进程id是 $pid"
else
echo "启动:$app_name"
cd $app_pre_dir ; nohup java $debug_param $jvm_xms $jvm_xmx -Djava.awt.headless=true -cp $app_dir org.springframework.boot.loader.WarLauncher >/dev/null 2>&1 &
fi
}
# 停止
stop() {
# 获取进程id
getpid
# 如果进程id存在,且对应的文件夹也存在
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
# 杀死进程id
kill -KILL $pid >/dev/null 2>&1
# 睡眠10秒,单位微秒
usleep 100000
echo "$app_name 已停止"
else
echo "$app_name 未运行"
fi
}
# 重启
restart() {
stop
start
}
# 进程id函数,获取进程id
getpid() {
pid=`ps -ef|grep "$app_dir"|grep -v grep|awk '{print $2}'`
}
# 启动参数
case "$1" in
start)
echo "------------------------执行启动------------------------"
start
;;
stop)
echo "------------------------执行停止------------------------"
stop
;;
debug)
echo "------------------------执行debug启动------------------------"
debug
;;
restart)
echo "------------------------执行重启------------------------"
stop
start
;;
status)
echo "------------------------执行查看------------------------"
getpid
if [ "$pid" != "" ] && [ -d /proc/$pid ]; then
echo "$app_name 正在运行,进程id是 $pid"
else
echo "$app_name 已停止"
fi
;;
*)
echo $"参数提示: $0 {start|debug|stop|restart|status}"
esac