一些脚本记录
# 删除指定目录,包括深层次的子目录
find . -depth -type d -name "$target_dir" -print0 | xargs -0 rm -rf
1
# 获取版本号
从docker swarm服务获取镜像tag作为版本版本号,并将版本号加1
get_version() {
local service_name=$1
local specified_version=$2
# 如果未指定版本号,从docker swarm 获取
if [ -z "$specified_version" ]; then
version=$(docker service ls | grep prod-$service_name: | awk '{print $5}' | awk -F:v '{print $2}')
# 取到的版本号如7.2024.11.28.01
# 以最后一个.为分隔符,将版本号分成两部分,前面的为主版本号,后面的为次版本号
version1="${version%.*}"
version2="${version##*.}"
# 次版本号加1
version2=$(($version2 + 1))
# 拼接版本号
final_version="v$version1.$version2"
echo "未指定版本号,从docker swarm 获取版本号:$version"
else
final_version=$specified_version
fi
echo "最终版本号:$final_version"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- 镜像tag形如image:v7.2024.11.28.01 ,所以使用
:v
作为分隔符,取第二部分作为版本号 %.*
%
表示从右边开始删除最短匹配的模式。.*
表示匹配最后一个.
及其右边的所有字符,例如7.2024.11.28.01
删除后为7.2024.11.28
##*.
##
表示从左边开始删除最长匹配的模式。*.
表示匹配第一个.
及其左边的所有字符,例如7.2024.11.28.01
删除后为01
# 临时部署的java服务
#!bin/bash
set -e
#关闭旧程序
shut_down(){
# 参数 $1 为端口号
echo "关闭旧程序"
# 根据端口号查询进程id
pid=$(netstat -nlp | grep :$1 | awk '{print $7}' | awk -F"/" '{ print $1 }')
# 如果存在进程id,杀掉进程
if [ -n "$pid" ]; then
echo "查到进程id:$pid,进程命令 $(ps -ef | grep $pid | grep -v grep)"
echo "是否关闭进程?(y/n)"
read input
if [ "$input" == "y" ]; then
kill -9 $pid
else
echo "操作已取消。"
exit
fi
else
echo "端口$1 未被占用"
fi
}
#启动新程序
start_up(){
# 参数 $1 为端口号
echo "启动新程序"
eval "nohup java -jar -Dserver.port=$1 app.jar &"
}
cd /home
#备份旧程序
if [ -f "app.jar" ]; then
mv app.jar app.jar.bak
fi
# 关闭旧程序
shut_down 9070
#从测试目录拷贝新程序
cp /home/bak/app.jar /home/app.jar
# 启动新程序
start_up 9070
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
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
# jenkins job的配置替换
#!/bin/bash
# 要查找和替换的字符串
old_url=""
new_url=""
# 遍历 job 目录下的所有 config.xml 文件
find jobs -type f -name "config.xml" | while read -r file; do
# 打印文件全路径
echo "正在处理文件:$file"
# 使用 sed 替换文件中的字符串
sed -i "s|$old_url|$new_url|g" "$file"
done
echo "替换完成"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
编辑 (opens new window)
上次更新: 2024/12/07, 12:00:34