01-每日一文件

每日一文件

【题目要求】

请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件, 例如生成的文件名为2017-12-20.log, 并且把磁盘的使用情况写到到这个文件中, 不用考虑cron,仅仅写脚本即可


-----------
xuehaozhe@ubuntu:~$ date +%F
2019-06-16
xuehaozhe@ubuntu:~$ date +%T
07:27:33

xuehaozhe@ubuntu:~$ date +%Y
2019
xuehaozhe@ubuntu:~$ date +%y 年 
19
xuehaozhe@ubuntu:~$ date +%m 月
06
xuehaozhe@ubuntu:~$ date +%d 日
16
xuehaozhe@ubuntu:~$ date +%H 小时
07
xuehaozhe@ubuntu:~$ date +%M 分
27
xuehaozhe@ubuntu:~$ date +%S 秒
48
xuehaozhe@ubuntu:~$ date +%s 时间戳
1560695333


xuehaozhe@ubuntu:~$ date -d "-1 day" +%F 上一个日期
2019-06-15
xuehaozhe@ubuntu:~$ date -d "-1 hours" +%T 上一个时间
06:30:01
xuehaozhe@ubuntu:~$ date +%w 周 周日为0
0
xuehaozhe@ubuntu:~$ date +%W 一年的第几周
23
----------------
xuehaozhe@ubuntu:~/shell$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            972M     0  972M   0% /dev
tmpfs           199M   22M  178M  11% /run
/dev/sda1        18G  5.6G   12G  34% /
tmpfs           992M  236K  992M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
vmhgfs-fuse     233G  149G   85G  64% /mnt/hgfs
tmpfs           199M   80K  199M   1% /run/user/1000
/dev/sr0         56M   56M     0 100% /media/xuehaozhe/VMware Tools

-----------------



【习题答案】

本题答案:

#! /bin/bash
d=`date +%F`
logfile=$d.log
df -h > $logfile

需求升级:

#!/bin/bash
d=`date +%F`
dir=/data/logs/disklog
if [ ! -d $dir ]
then
    mkdir -p $dir
fi
df -h > $dir/$d.log
find $dir/ -mtime +365 |xargs rm 将上一年的日期删除


---------------
mtime参数的理解应该如下:
-mtime n 按照文件的更改时间来找文件,n为整数。

n 表示文件更改时间距离为n天
-n 表示文件更改时间距离在n天以内
+n 表示文件更改时间距离在n天以前
例:

-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
为什么-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间48小时之外的文件,而不是24小时之外的呢? 因为n值只能是整数,即比1大的最近的整数是2,所以-mtime+1不是比当前时间大于1天(24小时),而是比当前时间大于2天(48小时)。
============
xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:

find /sbin -perm +700 |ls -l       #这个命令是错误的
find /sbin -perm +700 |xargs ls -l   #这样才是正确的



你可能感兴趣的:(01-每日一文件)