Loading... ```bash #! /bin/bash clientName=( admin-rpc admin-api order-rpc order-api client-rpc client-api user-rpc user-api api-api mqueue-scheduler mqueue-job ) # jarPath=(gateway-server2 oauth2-server2) DIR=/usr/src/code/data/server length=${#clientName[*]} case "$1" in \ logs) pids=$(ps -ef | grep -w $2 | grep -v "grep" | awk '{\$1="";print \$2}') pid=$(echo $pids | awk '{print $1}') if [ -n "$pid" ]; then path=$(ls -lrt /proc/$pid/cwd | awk '{print $11}') cd $path tail -f -n 300 ./log/logs.out else echo -e "程序未启动或不存在" fi ;; start) echo echo "======================== 服务正在启动中 ===================" for ((i = 0; i < $length; i++)); do #echo "============= ${clientName[i]} ==================" # cd $DIR/${jarPath[i]} cd $DIR/ # rm -rf nohup.out #nohup java -jar -Xms256m -Xmx256m -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=256m ${clientName[i]} & # 检查是否已运行 pid=$(ps -ef | grep -w ${clientName[i]} | grep -v "grep" | awk '{print $2}') if [ -n "$pid" ]; then echo -e "${clientName[i]} \t \033[31m 已经启动\033[0m pid: $pid" continue # 已运行则跳过 else # nohup ./${clientName[i]} -f ./yaml/${clientName[i]}.yaml >>./log/log-$(date +%Y-%m-%d).log 2>&1 & # 启动 nohup ./${clientName[i]} -f ./yaml/${clientName[i]}.yaml >>./log/logs.out 2>&1 & # 启动 fi for ((j = 0; j < 60; j++)); do # 检测是否启动成功 pid=$(ps -ef | grep -w ${clientName[i]} | grep -v "grep" | awk '{print $2}') if [ -n "$pid" ]; then break # 启动成功 fi sleep 0.1 done if [ -n "$pid" ]; then echo -e "${clientName[i]} \t \033[32m 成功 \033[0m " else echo -e "${clientName[i]} \t \033[31m 失败 \033[0m" fi done echo ;; stop) echo echo "====================== 服务正在停止 ===========================" for ((i = 0; i < $length; i++)); do if ps -ef | grep ${clientName[i]} | grep -v "grep" &>/dev/null; then pid=$(ps -ef | grep ${clientName[i]} | grep -v "grep" | awk '{print $2}') kill -9 ${pid} echo -e "${clientName[i]} \t \033[32m 成功 \033[0m" else echo -e "${clientName[i]} \t \033[32m 成功 \033[0m" fi done echo ;; \ restart) $0 stop sleep 6 $0 start echo -e "\033 [32m 所有服务重启完成....\033[0m" ;; \ status) echo echo "======================= 服务运行状态 ====================" for ((i = 0; i < $length; i++)); do pid=$(ps -ef | grep -w ${clientName[i]} | grep -v "grep" | awk '{print $2}') if [ -n "$pid" ]; then echo -e "${clientName[i]} \t \033[32m正常\033[0m pid: $pid" else echo -e "${clientName[i]} \t \033[31m 未运行 \033[0m" fi done echo ;; esac ``` ``` ./start.sh start # 启动服务 ./start.sh stop # 停止服务 ./start.sh status # 查看服务 ./start.sh log # 查看日志 ``` > 由于nohup写出的日志会越来越大 , 所以需要分割日志 > [【Linux】nohup日志进行定时拆分](https://blog.11dz.cn/archives/552.html) 最后修改:2022 年 08 月 27 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
1 条评论
作者的布局谋篇匠心独运,让读者在阅读中享受到了思维的乐趣。