在这之前先了解下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