Timed 时间序列工具
0. 安装使用
安装
# cd /usr/local
# wget https://gitee.com/pdudo/Timed/attach_files/603328/download/Timed1.0.0.linux-amd64.tar.gz
# tar zxvf Timed1.0.0.linux-amd64.tar.gz
验证
退出当前shell,重新进入shell
#Timed -v
Timed version 0.0.1 by 2021-01-28
#
1. seq
1.1 seq套件相比传统shell脚本
1.1.1 传统shell脚本
列出 20210128 到 20210202 且排除周六、周末
#!/bin/bash
startDate=20210128
endDate=20210202
currDate=$(date -d "-1 day $startDate" +"%Y%m%d")
while (( $currDate < $endDate ))
do
currWeek=$(date -d "+$1 day $currDate" +"%w")
currDate=$(date -d "+$1 day $currDate" +"%Y%m%d")
if [ 0 -eq $currWeek ] || [ 6 -eq $currWeek ];then
continue
fi
echo $currDate
done
结果
# bash test.sh
20210128
20210129
20210201
20210202
#
1.1.2 Timed seq 工具
# ./Timed -seq -s 20210128 -e 20210202 -k 6,0
20210128
20210129
20210201
20210202
1.2 Timed 工具
1.2.1 获取帮助文档
# ./Timed -h
Usage :
-h 获取帮助
-v 查看版本
-seq 用于生成容器或时间序列
-s string seq 开始时间
-e string seq 结束时间
-i int 时间间隔,单位(d/m/s) (default 1d)
-k string 跳过某些工作日(0: 周日 , 1-6 (周1-周6))
#
1.2.2 支持多种格式输出时间序列
yyyymmdd 格式
# ./Timed -seq -s 20210128 -e 20210202
20210128
20210129
20210130
20210131
20210201
20210202
#
yyyy-mm-dd 格式
# ./Timed -seq -s 2021-01-28 -e 2021-02-02
2021-01-28
2021-01-29
2021-01-30
2021-01-31
2021-02-01
2021-02-02
#
yy-mm-dd 格式
# ./Timed -seq -s 21-01-28 -e 21-02-02
21-01-28
21-01-29
21-01-30
21-01-31
21-02-01
21-02-02
#
yyyy-mm-ddTHH:MM:SS 格式
# ./Timed -seq -s 2021-01-28T18:39:43 -e 2021-02-02T18:37:00
2021-01-28T18:39:43
2021-01-29T18:39:43
2021-01-30T18:39:43
2021-01-31T18:39:43
2021-02-01T18:39:43
#
yy-mm-dd HH:MM 格式
# ./Timed -seq -s "2021-01-28 18:39:43" -e "2021-02-02 18:40:00"
2021-01-28 18:39:43
2021-01-29 18:39:43
2021-01-30 18:39:43
2021-01-31 18:39:43
2021-02-01 18:39:43
2021-02-02 18:39:43
#
1.2.3 自定义时间间隔
18:00:00 —— 18:13:00 每三分钟输出一次
# ./Timed -seq -s 18:00:00 -e 18:13:00 -i 3m
18:00:00
18:03:00
18:06:00
18:09:00
18:12:00
#
# ./Timed -seq -s 18:00:00 -e 18:00:46 -i 15s
18:00:00
18:00:15
18:00:30
18:00:45
#
1.2.4 排除特殊时间
打印 2021-01-29 —— 2021-02-02 日期,排除周六/周末
# ./Timed -seq -s 2021-01-29 -e 2021-02-02 -k 0,6
2021-01-29
2021-02-01
2021-02-02
#
1.2.5 和shell相结合
# cat test.sh
#!/bin/bash
for i in `./Timed -seq -s 2021-01-10 -e 2021-01-20 -i 2d -k 0,6`
do
{
echo "time:$i"
}
done
# bash test.sh
time:2021-01-12
time:2021-01-14
time:2021-01-18
time:2021-01-20
#