Linux基础命令- date
1.date 显示或设置系统日期与时间
-
格式:date 参数 +日期格式,
-
作用:用于显示或设置系统的时间或日期
-
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
date “+%F” 完整日期格式。字符串前后必须加上双引号;
1.常用参数和格式
1.常用参数
- -d datestr 显示datestr中所设定的时间(非系统时间)
- -s datestr 将系统时间设为datestr中所设定的时间
- -u 显示目前的格林威治时间
- –help 显示帮助信息
- –version 显示版本编号
2.常用格式
- %y 年份最后两位数字(00…99)
- %Y 年份
- %m 月份范围(01…12)
- %d 一月中的一天(01…31)
- %M 分钟
- %H 小时
- %S 秒
- %t 水平制表符
- %F 完整的日期;等价于%+4Y-%m-%d
2.date应用实例
1.以默认格式输出系统当前的日期和时间信息
[root@localhost ~]# date
2023年 01月 15日 星期日 16:48:27 CST
2.按找年-月-日的指定格式输出日期
[root@localhost ~]# date +%F
2023-01-15
[root@localhost ~]# date +%Y-%m-%d
2023-01-15
3.按格式年-月-日 时:份:秒输出当前日期
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2023-01-15 16:54:20
4.使用 -d 参数指定时间运算
- 格式:date -d ‘运算规则’
- 作用:指定时间运算规则,date会将当前时间做指定的运算,然后输出运算后的时间
[root@localhost ~]# date
2023年 01月 15日 星期日 17:00:21 CST
[root@localhost ~]# date -d '3 minutes'
2023年 01月 15日 星期日 17:03:25 CST
[root@localhost ~]# date -d '3 days'
2023年 01月 18日 星期三 17:00:26 CST
$ date +%Y%m%d #显示当前年月日
$ date -d "+1 day" +%Y%m%d" #显示前一天的日期
$ date -d "-1 day" +%Y%m%d" #显示后一天的日期
$ date -d "-1 month" +%Y%m%d" #显示上一月的日期
$ date -d "+1 month" +%Y%m%d" #显示下一月的日期
$ date -d "-1 year" +%Y%m%d" #显示前一年的日期
$ date -d "+1 year" +%Y%m%d" #显示下一年的日期
5.使用 -f 参数
- 格式:date -f 文件路径
- 作用:可将 -d 参数指定的运算规则写入文件中,通过 -f 参数指定文件路径,date命令逐行读取该文件,并按照此文件指定的运算规则输出运算后的时间
[root@localhost ~]# cat >>/root/datefile <<EOF
> date
> 1 years ago
> 3 months
> 2 days
> 1 year
> -3 days
> EOF
[root@localhost ~]# date -f datefile
date: 无效的日期"date"
2022年 01月 15日 星期六 17:06:01 CST
2023年 04月 15日 星期六 17:06:01 CST
2023年 01月 17日 星期二 17:06:01 CST
2024年 01月 15日 星期一 17:06:01 CST
2023年 01月 12日 星期四 17:06:01 CST
6.-s 参数,修改系统时间
- 格式:date -s ‘字符串’
- 作用:根据 -s 指定的内容设定系统时间.执行此命令需要提权
[root@localhost ~]# date -s "20121212 8:30:00"
2012年 12月 12日 星期三 08:30:00 CST
[root@localhost ~]# date
2012年 12月 12日 星期三 08:30:01 CST
$ date -s #设置当前时间,只有root权限才能设置,其他只能查看
$ date -s 20230110 #设置成20230110,这样会把具体时间设置成空00:00:00
$ date -s 01:01:01 #设置具体时间,不会对日期做更改
$ date -s "01:01:01 20230110" #这样可以设置全部时间
$ date -s "20230110 01:01:01" #这样可以设置全部时间
-
如果要还原回来需要用到时间同步服务器,ntpdate
比如要与上海时区时间同步
[root@localhost ~]# ntpdate -u ntp.api.bz
11 Jan 19:39:30 ntpdate[75487]: step time server 114.118.7.161 offset 318164310.373762 sec
[root@localhost ~]# date
2023年 01月 11日 星期三 19:39:32 CST
7. -r 显示文件最后被修改的时间
-r 等于 --reference
使用方法:
格式:date -r 文件路径
作用:显示指定文件最后被修改的时间
[root@localhost ~]# date -r datefile
2023年 01月 15日 星期日 17:05:36 CST
- 注意:cat查看文件不影响,vim进入文件即会修改时间
8.%s 计算自UTC时间1970年至今的秒数
date +%s
自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
[root@localhost ~]# date +%s
1673775079
这个秒数带了时区计算,所以得额外判断时区。
1.检测一组命令花费的时间
[root@localhost ~]# vim date.sh
#!/bin/bash
start=$(date +%s)
ping -c5 -w5 www.baidu.com &>/dev/null
end=$(date +%s)
diff=$((end - start))
echo $diff seconds
[root@localhost ~]# chmod +x date.sh
[root@localhost ~]# ./date.sh
1673776340 seconds
[root@localhost ~]# sh -x date.sh
++ date +%s
+ tart=1673776347
+ ping -c5 www.baidu.com
++ date +%s
+ end=1673776351
+ diff=1673776351
+ echo 1673776351 seconds
1673776351 seconds
2.sh命令
- sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通
- 语法:
bash [options] [file]
- 选项
-c string:命令从-c后的字符串读取。
-i:实现脚本交互。
-n:进行shell脚本的语法检查。
-x:实现shell脚本逐条语句的跟踪。
12.宝塔清单列表脚本
$ vim 1.sh
$ chmod +x 1.sh
[root@localhost 1]# ll
总用量 0
-rwxr-xr-x 1 root root 0 12月 11 13:59 1.sh
[root@localhost 1]# vim 1.sh
#!/bin/bash
echo "请从以下选项中,选出你要进行的操纵"
echo "安装apache";echo "安装MySQL";echo "安装PHP";
echo "安装LAMP";
echo "安装wordpress";
[root@localhost 1]# ./1.sh
请从以下选项中,选出你要进行的操纵
安装apache
安装MySQL
安装PHP
安装LAMP
安装wordpress
#使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态
$ sh -x 1.sh
+ echo 请从以下选项中,选出你要进行的操纵
请从以下选项中,选出你要进行的操纵
+ echo 安装apache
安装apache
+ echo 安装MySQL
安装MySQL
+ echo 安装PHP
安装PHP
+ echo '安装LAMP'
安装LAMP