5.5 du:统计磁盘空间使用情况
5.5.1 命令详解
【命令星级】 ★★★★★
【功能说明】
du命令可以用于统计磁盘空间的使用情况,这个命令有助于我们找出那个文件过多地占用了磁盘空间。
【语法格式】
du [option] [file]
du [选项] [<文件或目录>]
**说明:**在du命令及后面的选项里,每个元素之间都至少要有一个空格。
【选项说明】
表5-5针对该命令的参数选项进行了说明。
表5-5 du命令的参数选项及说明
5.5.2 使用范例
**范例5-10:**通过参数-a显示所有目录或文件所占空间。
[root@centos7 ~]# du -a #显示当前目录下所有文件(包括隐藏文件及子目录下的所有文件)的大小。
4 ./.bash_logout
4 ./.bash_profile
4 ./.bashrc
4 ./.cshrc
4 ./.tcshrc
20 ./.bash_history
4 ./anaconda-ks.cfg
4 ./.viminfo
72 .
**范例5-11:**参数-s与-h的使用案例。
[root@centos7 ~]# du -s #显示当前目录的总大小。
72 .
[root@centos7 ~]# du -h #-h参数会换算成K、M、G这种易读易理解的结果。
72K .
[root@centos7 ~]# du -sh #-sh是常用的命令组合,也是推荐大家使用的方法。
72K .
[root@centos7 ~]# du -sh /usr/local #显示指定目录的总大小。
0 /usr/local
**范例5-12:**显示指定层次的目录的大小。
[root@centos7 ~]# du -h --max-depth=1 /usr/local/ #只显示第一层目录的大小。
0 /usr/local/bin
0 /usr/local/etc
0 /usr/local/games
0 /usr/local/include
0 /usr/local/lib
0 /usr/local/lib64
0 /usr/local/libexec
0 /usr/local/sbin
0 /usr/local/share
0 /usr/local/src
0 /usr/local/
[root@centos7 ~]# du -h --max-depth=2 /usr/local/ #只显示第一、第二层目录的大小。
0 /usr/local/bin
0 /usr/local/etc
0 /usr/local/games
0 /usr/local/include
0 /usr/local/lib
0 /usr/local/lib64
0 /usr/local/libexec
0 /usr/local/sbin
0 /usr/local/share/applications
0 /usr/local/share/info
0 /usr/local/share/man
0 /usr/local/share
0 /usr/local/src
0 /usr/local/
**范例5-13:**排除指定目录的案例。
[root@centos7 ~]# du -h --max-depth=2 /usr/local/ --exclude=/usr/local/share #不显示/usr/local/share目录的大小。
0 /usr/local/bin
0 /usr/local/etc
0 /usr/local/games
0 /usr/local/include
0 /usr/local/lib
0 /usr/local/lib64
0 /usr/local/libexec
0 /usr/local/sbin
0 /usr/local/src
0 /usr/local/
5.6 date:显示与设置系统时间
5.6.1 命令详解
【命令星级】 ★★★★★
【功能说明】
date命令用于显示当前的系统时间或设置系统时间。
【语法格式】
date [option] [+FORMAT]
date [选项] [+日期格式]
【选项说明】
表5-6针对date命令的参数选项进行了说明。
表5-6 date命令的参数选项及说明
5.6.2 使用范例
**范例5-14:**常用时间格式测试例子。
大家可以对着上面的表格逐一测试参数,这里限于篇幅仅列举一部分:
[root@centos7 ~]# date +%y #显示年(短格式)。
20
[root@centos7 ~]# date +%Y #显示年(长格式)。
2020
[root@centos7 ~]# date +%m #显示月。
10
[root@centos7 ~]# date +%d #显示日。
11
[root@centos7 ~]# date +%H #显示小时。
18
[root@centos7 ~]# date +%M #显示分。
48
[root@centos7 ~]# date +%S #显示秒。
45
[root@centos7 ~]# date +%F #显示特殊格式日期(年-月-日)。
2020-10-11
[root@centos7 ~]# date +%T #显示特殊格式时间(时:分:秒)。
18:48:52
**范例5-15:**通过-d显示指定字符串所描述的时间的示例。
[root@centos7 ~]# date +%F -d "-1day" #显示昨天(简洁写法)。
2020-10-10
[root@centos7 ~]# date +%F -d "yesterday" #显示昨天(英文写法)。
2020-10-10
[root@centos7 ~]# date +%F -d "-2day" #显示前天。
2020-10-09
[root@centos7 ~]# date +%F -d "+1day" #显示明天。
2020-10-12
[root@centos7 ~]# date +%F -d "tomorrow" #显示明天(英文写法)。
2020-10-12
[root@centos7 ~]# date +%F -d "+2day" #显示2天后。
2020-10-13
[root@centos7 ~]# date +%F -d "1month" #显示1个月后。
2020-11-11
[root@centos7 ~]# date +%F -d "1year" #显示1年后。
2021-10-11
#说明:这里的+号表示未来,-号表示过去,day表示日,year表示年,month表示月。
[root@centos7 ~]# date +%F -d "24hour"
2020-10-12
[root@centos7 ~]# date +%F -d "1440min"
2020-10-12
[root@centos7 ~]# date +%F -d "-1440min"
2020-10-10
**说明:**这里的hour表示小时,min表示分。
**范例5-16:**时间格式转换例子。
[root@centos7 ~]# date
Sun Oct 11 19:00:37 CST 2020
[root@centos7 ~]# date -d "Sun Oct 11 19:00:37 CST 2020" "+%Y-%m-%d %H:%M:%S"
2020-10-11 19:00:37
说明:
-d选项后面应接上需要转化的时间,最后再接上你想要输出的时间格式。
下面是一个企业面试题,要求转换日志的时间格式,解答该题会利用到上面的知识点,同时还会使用awk命令。
备用数据如下:
[root@centos7 ~]# cat >test.log<<EOF
> Sat May 19 13:40:02 CST 2019 is 13213213
> Sat May 19 19:37:43 CST 2019 is 1012122
> Sat May 19 13:40:03 CST 2019 is 13213213
> Sat May 19 19:37:42 CST 2019 is 1012122
> Sat May 19 13:40:03 CST 2019 is 13213213
> Sat May 19 19:37:43 CST 2019 is 1012122
> EOF
解答过程如下:
[root@centos7 ~]# awk -F "is" '{print "echo $( date -d \" "$1"\" \"+%F %T \" )",$2}' test.log
#对内容按照命令进行拼接。
echo $( date -d " Sat May 19 13:40:02 CST 2019 " "+%F %T " ) 13213213
echo $( date -d " Sat May 19 19:37:43 CST 2019 " "+%F %T " ) 1012122
echo $( date -d " Sat May 19 13:40:03 CST 2019 " "+%F %T " ) 13213213
echo $( date -d " Sat May 19 19:37:42 CST 2019 " "+%F %T " ) 1012122
echo $( date -d " Sat May 19 13:40:03 CST 2019 " "+%F %T " ) 13213213
echo $( date -d " Sat May 19 19:37:43 CST 2019 " "+%F %T " ) 1012122
[root@centos7 ~]# awk -F "is" '{print "echo $( date -d \" "$1"\" \"+%F %T \" )",$2}' test.log|bash
2019-05-19 13:40:02 13213213
2019-05-19 19:37:43 1012122
2019-05-19 13:40:03 13213213
2019-05-19 19:37:42 1012122
2019-05-19 13:40:03 13213213
2019-05-19 19:37:43 1012122
#命令说明:使用is作为分隔符,$1是“Sat May 19 13:40:02 CST 2019”,$2是“13213213”,首先使用date命令对原时间格式进行转换,然后利用awk拼凑出如下格式,最后使用bash执行命令。
**范例5-17:**通过参数-s设定时间。
[root@centos7 ~]# date -s 20201008 #设置成20201008,具体时间为空即00:00:00。
Thu Oct 8 00:00:00 CST 2020
[root@centos7 ~]# date -s 00:00:03 #设置具体时间,不会对日期做更改。
Thu Oct 8 00:00:03 CST 2020
[root@centos7 ~]# date -s "00:00:03 20201008" #这样可以设置全部时间。
Thu Oct 8 00:00:03 CST 2020
[root@centos7 ~]# date -s "00:00:03 2020-10-08" #日期可使用不同的格式。
Thu Oct 8 00:00:03 CST 2020
[root@centos7 ~]# date -s "00:00:03 2020/10/08" #日期可使用不同的格式。
Thu Oct 8 00:00:03 CST 2020
**范例5-18:**显示时间后换行,再显示日期。
[root@centos7 ~]# date +%T%n%D #%n的作用是换行。
21:44:09
10/24/20