linux使用shell脚本启动jar包 java -jar等指令

在这之前先了解下shell基础的基础。

#!/bin/bash   文件头 
echo 'hollword'
#多行注释
:<<!
echo 'hollword'
!

#给脚本权限
chmod u+x xx.sh #给权限
chmod u-x xx.sh #去除脚本权限
chmod 777 xx.sh #给权限

变量的定义

#定义变量法一般都是头字母大写
A=100
echo $A #输出变量A

#如果加上 `date` 代表它是已一个指令或者标量来执行
A=`date`
echo A
$(date)等价与``

设置环境变量

#在/etc/profile这个文件是全局的变量,例如java环境就是在这里配置
export 变量名=变量值  #将shell的变量作为的全局的变量去输出
source 配置文件  #让修改的配置文件立即生效
例子:
vim /ect/profile
A=100
export $A
#接下里退出文件 wq
source /etc/profile #重新加载配置文件
#在外面直接输出  echo $A

位置参数变量

echo ”命令为:$0,第一个参数为:$1“ #$1-$9,十以上的参数需要使用${10}
echo “整体的命令为:$*”
echo “区分对待的整体参数:$@”
echo “获取参数中的个数:$#”

#输出结果
”命令为:./hollwrod.sh,第一个参数为:100“
“整体的命令为:100 200”
“区分对待的整体参数:100 200”
“获取参数中的个数:2”

运算符

判断条件

 

#注意空格的分开
if [ "ok" = "ok" ]
then "等于"
fi



if [ -f /root/home/cws.txt ]
then "存在"
fi

#这样直接报错
if  []
then "xx"
fi
#真确写法 结果为false  ,如果有问内容在[]里面就为true
if  [  ]
then "xx"
fi

#多分支案例:
if [ $1 -gt 60]
   then  
echo "及格了"
elif [ $1 -lt 60]
   then 
echo "很遗憾"
fi

 case语句

case $1 in
"1")
echo "星期一"
;;
"2")
echo "星期二"
;;
*)
echo "other"
;;
esac

循环 

#根据参数获取变量
for i in "$*"
do 
echo "num is $i"
done
#结果 num is 777 10 20
=============================
for i in "$@"
do 
echo "num is $i"
done
#结果
num is 777
num is 10
num is 20
#求和
RES=0
for ((i=0;i<="$1";i++))
do
RES=$[$RES+$i]
done
echo "值为:$RES"
#结果
./fortest.sh 100
值为:5050

while写法

PAS=$1
I=0
while [ $I < "$PAS" ]
do
PAS=$[$PAS-1]
I=$[ $I +1 ]
echo "$PAS"
done

控制台输入

read -p "请输入一个值:" NUM1
echo "您输入的是=$NUM1"
#等待10秒未输入直接执行
read -t 10 -p NUM2
echo "您输入的是=$NUM2"

数组

#1
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
echo ${array[2]} #读取数组2的元素
echo ${#array[*]} #读取全部
#2
数组名=(value0 value1 value2 ...)

使用shell脚本启动jar包

#!/bin/bash
#定义jar数组,需要按需修改
jarArr=(A.jar B.jar C.jar )
len=${#jarArr[*]} #获取长度

case "$1" in 

start)
    for ((i=0;i<len;i++))
        do
                jarName=${jarArr[i]};#把每个jar的名字赋值给jarName
        nohup java -jar  $jarName >/dev/null 2>&1 &
        done
    ;;
stop)
    for ((i=0;i<len;i++))
    do
        jarName=${jarArr[i]};
        tmpPid=`ps -ef |grep $jarName |grep -v "grep" | awk '{print $2}'` #获取进程id
        if [ $tmpPid ]; then
            kill -9 $tmpPid
        else
            echo -e "$jarName包进程不存在,无须停止\\n"
        fi
    done
    ;;
restart)
    $0 stop
        sleep 10
        $0 start
        echo "【 所有jar包重启完成】"
    ;;
status)
    for ((i=0;i<len;i++))
    do
        jarName=${jarArr[i]};
        tmpPid=`ps -ef | grep $jarName | grep -v "grep" | awk '{print $2}'`
        if [ ! $tmpPid ]; then
            echo -e "【$jarName jar包 运行异常】\\n"
        else
            record=`ps -ef|grep -v grep|grep $jarName`
            port=$(ss -ntlp|grep $(echo $record|awk '{print $2}') |sed -r "s#.*:::([0-9]{3,5}).*#\1#g");
            echo -e "【$jarName jar包 运行正常,pid为 $tmpPid,port为 $port】\\n"
        fi
    done
    ;;  
esac
exit 0

脚本二:

#!bin/bash create cws
# mv ntocc-jar/ntocc-*-api/target/*.jar /root/jar #把所有的jar放到统一目录

jarArr=(xxxx-api.jar,xxxx-api.jar,xxxx-api.jar,xxxx-api.jar)
len=${#jarArr[*]} #获取长度

case "$1" in 
start)
    nohup java -jar -Xmx2g -Xms2g  xxxx-api.jar --spring.profiles.active=test --server.port=9004 >ntocc-basic-api.out &
    nohup java -jar -Xmx2g -Xms2g ntocc-xxxx-api.jar --spring.profiles.active=test --server.port=9001 >ntocc-es-api.out &  
    nohup java -jar -Xmx2g -Xms2g xxxx-api.jar --spring.profiles.active=test --server.port=9006 >ntocc-site-api.out &
    nohup java -jar -Xmx2g -Xms2g xxxx-api.jar --spring.profiles.active=test  --server.port=9002 >ntocc-tms-api.out &
    nohup java -jar -Xmx1500m -Xms1500m xxxx-api.jar --spring.profiles.active=test  --server.port=9003 >ntocc-tps-api.out &
    nohup java -jar -Xmx1g -Xms1g  xxxx.jar --spring.profiles.active=test  --server.port=9090 >ntocc-websocket.out &
    nohup java -jar -Xmx2g -Xms2g xxxx.jar --spring.profiles.active=test --server.port=9008 >ntocc-new-api.out &
    for ((i=0;i<len;i++))
    do
        jarName=${jarArr[i]};
        tmpPid=`ps -ef | grep $jarName | grep -v "grep" | awk '{print $2}'`
        if [ ! $tmpPid ]; then
            echo -e "【$jarName jar包 运行异常】\\n"
        else
            record=`ps -ef|grep -v grep|grep $jarName`
            port=$(ss -ntlp|grep $(echo $record|awk '{print $2}') |sed -r "s#.*:::([0-9]{3,5}).*#\1#g");
            echo -e "【$jarName jar包 运行正常,pid为 $tmpPid,port为 $port】\\n"
        fi
    done
    ;;  	
    
stop)
    for ((i=0;i<len;i++))
    do
        jarName=${jarArr[i]};
        tmpPid=`ps -ef |grep $jarName |grep -v "grep" | awk '{print $2}'` #获取进程id
        if [ $tmpPid ]; then
            kill -9 $tmpPid
        else
            echo -e "$jarName包进程不存在,无须停止\\n"
        fi
    done
   ps -axu | grep java	 
   ;;	
restart)
    $0 stop
        sleep 10
        $0 start
        echo "【 所有jar包重启完成】"
    ;;
status)
    for ((i=0;i<len;i++))
    do
        jarName=${jarArr[i]};
        tmpPid=`ps -ef | grep $jarName | grep -v "grep" | awk '{print $2}'`
        if [ ! $tmpPid ]; then
            echo -e "【$jarName jar包 运行异常】\\n"
        else
            record=`ps -ef|grep -v grep|grep $jarName`
            port=$(ss -ntlp|grep $(echo $record|awk '{print $2}') |sed -r "s#.*:::([0-9]{3,5}).*#\1#g");
            echo -e "【$jarName jar包 运行正常,pid为 $tmpPid,port为 $port】\\n"
        fi
    done
    ;; 
remove)
     find /home/jar -name "*.jar" -type f -delete
     ls *.jar
     echo '已删除所有jar'
    ;;
esac
exit 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值