Shell
脚本攻略读书笔记六之Date
命令
1. 主要命令
查看时区 date -R
更改时区 tzselect
查看时间 date
查看日历 cal
修改时间 date -s
,其后接日期,表示将时间修改为指定的日期;若其后接时间,表示修改当前时间为 指定的时间
2. 简单应用
2.1 修改时间
[root@server4 local]# date -s 11/11/2020
Wed Nov 11 00:00:00 CST 2020
[root@server4 local]# date -s 0:16:12
Wed Nov 11 00:16:12 CST 2020
2.2 centos 7修改时区【这个可能与在系统初始化时有关】
[root@server4 local]# date
Sat Jul 7 04:51:47 EDT 2018
[root@server4 local]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@server4 local]# date
Sat Jul 7 16:54:18 CST 2018
2.3 格式化日期
- 查看年
[root@server4 ~]# date +"%Y"
2018
- 查看年月
[root@server4 ~]# date +"%Y%m"
201811
- 查看年月日
[root@server4 ~]# date +"%Y%m%d"
20181130
- 按照某种格式查看日期
[root@server4 ~]# date +"%Y-%m-%d"
2018-11-30
这其中的连字符可以使用任何的字符。比如+
,-
,*
,/
等等。
[root@server4 ~]# date +"%Y/%m/%d"
2018/11/30
[root@server4 ~]# date +"%Y=%m=%d"
2018=11=30
[root@server4 ~]# date +"%Y/%m/%d"
2018/11/30
[root@server4 ~]# date +"%Y+%m+%d"
2018+11+30
- 查看年月日,时分秒
[root@server4 shells]# date "+%Y-%m-%d %H:%M:%S"
2018-12-01 10:24:03
2.4 使用date
计算日期
[root@server4 ~]# date -d"20181010 +1 day" +"%Y%m%d"
20181011
[root@server4 ~]# date -d"20181010 -1 day" +"%Y%m%d"
20181009
[root@server4 ~]# date -d"20181010 -1 month" +"%Y%m%d"
20180910
[root@server4 ~]# date -d"20181010 -1 year" +"%Y%m%d"
20171010
2.5 查看当前时间戳
-
date +%s
命令
3. 实战案例
3.1 根据日期,生成相应文件夹
[root@server4 logs]# cat makeLog.sh
today=`date +"%Y%m%d"`
echo $today
ago_month=`date -d"1 month ago" +"%Y%m%d"`
echo $ago_month
tempDay=$ago_month
cd /data/software/kettle/data-integration/logs
for((i=0;$tempDay<$today;i++))
do
tempDay=`date -d"$tempDay +1 day" +"%Y%m%d"`
echo $tempDay
`mkdir $tempDay`
done
执行效果就是:
[root@server4 logs]# ll
total 4
drwxr-xr-x. 2 root root 6 Dec 25 13:40 20181126
drwxr-xr-x. 2 root root 6 Dec 25 13:40 20181127
drwxr-xr-x. 2 root root 6 Dec 25 13:40 20181128
drwxr-xr-x. 2 root root 6 Dec 25 13:40 20181129
···
drwxr-xr-x. 2 root root 6 Dec 25 13:40 20181224
drwxr-xr-x. 2 root root 6 Dec 25 13:40 20181225
-rwxr--r--. 1 root root 279 Dec 25 13:40 makeLog.sh
3.2 计算job运行时间
脚本如下:
[root@server4 shells]# cat test4.sh
#!/bin/bash
start=`date +%s`
echo start_time:$start
res=0
for((i=0;i<100000;i++))
do
res=$(($res+$i))
done
echo "sum of(1,1000)is:" $res
end=`date +%s`
echo end_time:$end
spend=$(($end-$start))
echo spend is:$spend
运行结果如下:
[root@server4 shells]# ./test4.sh
start_time:1545821606
sum of(1,1000)is: 4999950000
end_time:1545821607
spend is:1