您的位置:首页 > 运维架构 > Shell

dubbo基础篇三_linux部署dubbo服务以及shell脚本编写

2018-02-05 23:14 896 查看
部署目录规范

对dubbo服务进行良好的分级管理.

如图所示


linux手动启动dubbo服务, java -jar *.jar 名称 &

编写shell脚本

维护脚本注意事项



避免线程误杀,需要进行全匹配 比如 grep -w (全匹配)

太晚了,shell编写待续…

shell编写代码

#!/bin/sh

## 定义一些使用变量
# 定义环境变量
export JAVA_HOME=/usr/local/jdk/bin
# 服务模块名称
APP_NAME=user
# 服务存储目录
SERVICE_DIR=/dubbo/edu/service/$APP_NAME
# 服务名称
SERVICE_NAME=edu-service-$APP_NAME
# 服务jar名称
JAR_NAME=$SERVICE_NAME\.jar
# 服务启动后的PID
PID=$SERVICE_NAME\.pid

# 开始执行命令
# 进入该目录
cd $SERVICE_DIR

# $1 -> 表示用户输入的数据
case "$1" in
# 启动服务
start)
# nohup表示以守护线程启动该服务, >/del/null 表示将日志打印到黑洞中 &也是在表示以守护线程启动
nohup /usr/local/jdk/bin/java -Xms256m -Xmx512m -jar $JAR_NAME > /dev/null 2>&1 &
# 将启动后的该服务线程PID写到.pid文件中,以便stop时使用
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
;;

stop)
# kill 优雅关闭该线程
kill `cat $SERVICE_DIR/$PID`
# 移除目录下的 .pid文件
rm -rf $SERVICE_DIR/$PID
echo "=== stop $SERVICE_NAME"
# 线程睡眠五秒,然后如果该服务没有关闭,则强行关闭
sleep 5
# grep -w 表示全面匹配, grep -v 表示过滤掉带有grep数据的该行数据 awk是对数据处理的一个工具
# awk 格式为 awk(条件){执行体}. $2表示过滤后的第二条数据,既PID
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ];then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME pid is:$P_ID"
echo "=== begin kill"
kill -9 $P_ID
fi
;;
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;
*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
# exit n 表示退出该执行 , n表示成功返回码
exit 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: