美文网首页
01-每日一文件

01-每日一文件

作者: 数据工程师从入门到放弃 | 来源:发表于2019-06-18 00:56 被阅读0次

    每日一文件

    【题目要求】

    请按照这样的日期格式(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-每日一文件

          本文链接:https://www.haomeiwen.com/subject/oigtqctx.html