Linux计算时间差
- 1、Linux计算时间差
- 2、时间差的应用
1、Linux计算时间差
在Linux中,计算时间差通常是为了统计、监控或调试。时间差可以用来衡量任务执行的时间,或者两个事件之间的间隔。例如,响应时间、执行时间、定时任务与延时处理等
以下是一个示例:
#!/bin/bash
sta_dt=$(date +"%Y-%m-%d %H:%M:%S")
end_dt=$(date +"%Y-%m-%d %H:%M:%S")
# 方式1:使用date命令
# 1)日期转时间戳(单位:s)
sta_timestamp=$(date -d "$sta_dt" +%s)
end_timestamp=$(date -d "$end_dt" +%s)
# 2)计算差值(单位:s)
diff_timestamp=$((end_timestamp - sta_timestamp))
# 方式2:使用timediff命令(单位:min)
diff_min=$(timediff -r "%M" "$sta_dt" "$end_dt")
2、时间差的应用
需求描述:删除HDFS上指定目录下超过3天的文件
实现过程如下:
#!/bin/bash
# 当前时间
now_dt=`date "+%Y-%m-%d %H:%M"`
# 转换为时间戳(s)
now_timestamp=$(date -d "$now_dt" +%s)
# 遍历HDFS目录
for item in `hdfs dfs -ls /tmp/log/ | sed '1d' | sed -r 's/\s+/^/g'`
do
date_time=`echo $item | awk -F'^' '{print $6,$7}'`
item_file=`echo $item | awk -F'^' '{print $8}'`
# date_time转换为时间戳(s)
datetime_timestamp=$(date -d "$date_time" +%s)
# 计算时间差
timestamp_diff=$((now_timestamp - datetime_timestamp))
# 删除超过三天的文件
if [[ $timestamp_diff -gt 259200 ]]; then
hdfs dfs -rm $item_file
fi
done