一些脚本记录

# 删除指定目录,包括深层次的子目录

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
  • 镜像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

# 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
上次更新: 2024/12/07, 12:00:34
最近更新
01
docker-compose笔记
01-12
02
MySQL数据迁移
11-27
03
Docker部署服务,避免PID=1
11-27
更多文章>