服务更新部署(服务批量停止启动,查看状态)

备份数据

进入文件夹

1
/data/wwwjarapi/schoolcloudapi

删除日志

这会删除文件夹及其子文件夹下的日志文件

1
2
3
find . -type f -name "*log.txt" -exec rm -f {} \;
find . -type f -name "*.gz" -exec rm -f {} \;
find . -type f -name "*.tmp" -exec rm -f {} \;

复制原项目

1
2
cd ../
cp -r schoolcloudapi schoolcloudapi_bak

批量执行脚本

创建批量执行脚本

1
vi /etc/init.d/schoolcloudapitest.sh

我这里会有以端口.sh命名的各个服务,所以能使用下面的方式启动。

内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run

server_names=(8301 8302 8304 8305 8306 8307 8308 8309 8310 8311)

# 手动加载 /etc/profile
. /etc/profile

status(){
for server_name in ${server_names[@]}
do
netstat -tuln | grep -q :$server_name
if [ $? -eq 0 ]; then
echo "$server_name is start"
else
echo "$server_name is stop"
fi
done
}

#开始方法
start() {
for server_name in ${server_names[@]}
do
service $server_name.sh start
done
echo "all start success."
}

#结束方法
stop() {
for server_name in ${server_names[@]}
do
service $server_name.sh stop
done
echo "all stop success."
}

case "$1" in
status)
status
;;
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac

添加执行权限

1
chmod +x /etc/init.d/schoolcloudapitest.sh

测试

1
2
3
service schoolcloudapitest.sh status
service schoolcloudapitest.sh stop
service schoolcloudapitest.sh start

想关说明

批量执行

批量执行脚本

1
vi batch.sh

内容

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

#将要执行的脚本
server_names=(8301.sh 8302.sh 8304.sh 8305.sh 8306.sh 8307.sh 8308.sh 8309.sh 8310.sh)

#依次执行
for server_name in ${server_names[@]}
do
echo "run $server_name"
done

测试

1
2
chmod +x batch.sh
./batch.sh

服务脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run

# 手动加载 /etc/profile
. /etc/profile

#开始方法
start() {
cd $JAR_ROOT
nohup java -Dfile.encoding=utf-8 -jar -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128M $JAR_PATH >$LOG_PATH 2>&1 &
echo "$JAR_PATH start success."
}

#结束方法
stop() {
kill -9 `ps -ef|grep $JAR_PATH|grep -v grep|grep -v stop|awk '{print $2}'`
echo "$JAR_PATH stop success."
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac

查看端口状态

1
2
3
4
5
6
netstat -tuln | grep -q :8301
if [ $? -eq 0 ]; then
echo "8301 is start"
else
echo "8301 is stop"
fi