美文网首页周记
周记 2017 4.10 - 4.16

周记 2017 4.10 - 4.16

作者: 小程有话说 | 来源:发表于2017-04-11 13:10 被阅读23次

    定时任务

    应用每天都会产生日志,需要定期清理,如何把这个过程自动化呢。

    找到需要删除的日志文件 find命令
     find [path] [expression]
     path:目录地址。
     expression:
      -options:指定find命令常用选项。
       -name:按照文件名查找。
       -perm:根据文件权限查找。
       -user:按照文件属性来查找文件。
       -group:按照文件属主来查找文件。
       -mtime:-n文件更改时间距现在n天以内,+n文件更改时间距现在n天以前。
       -newer:file1!file2,查找更改时间比文件file1新但比file2旧的文件。
       -type:b 块设备文件,d 目录,c 字符设备文件,p 管道文件,l 符号链接文件,f 普通文件。
       -size n:查找文件长度为n块(一块-312字节)的文件,c表示文件长度以字节计算。
      -print:将匹配文件输出到标准输出。
      -exec:对匹配文件执行shell命令,格式(command {} \;)。
      -ok:和exec作用相同,执行每个命令前,给出提示,由用户确定是否执行。
    

    示例:

    find ./ -size 0 exec rm {} \; # 删除文件大小为0的文件
    find ./ -type f -mtime +5 -exec rm {} \; # 删除更改时间在5日之前的文件
    find ./ -name '*.log' -mtime +5 -ok rm {} \; # 在当前目录中查找所有以.log结尾文件,更改时间在5日以上的文件,并删除它们,删除前给出提示。
    

    find与exec一起使用,如果找到的文件过多某些系统会出现溢出错误;所以可以结合xargs使用,其每次获取一部分文件而不是全部。

    find ./ size 0 | xargs rm -rf
    

    删除较早日志脚本:

    delete_log.sh
    #!/bin/sh
    find /opt/web/tomcat9/creditaudit -type f -name '*.log' -mtime +30 | xargs rm -rf
    

    参考1
    参考2

    定时执行 crontab

    查看当前用户定时任务:

    cat /etc/crontab
    
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=""
    HOME=/
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed
    

    特殊符号:

    特殊符号:
    *:代表所有可能的值。
    ,:隔开值指定一个范围,“1,2,3”。
    -:表示整数范围,"1-3"。
    /:表示时间间隔频率,"0-23/2"表示每2个小时执行一次;"*/10"表示每10分钟执行一次。
    

    常用命令:

    crontab -e # 编辑某个用户的crontab,默认编辑当前用户。
    crontab -l # 显示用户crontab文件内容。
    crontab -r # 删除某个用户的crontab文件。
    crontab -i # 在删除用户crontab文件时给出确认提示。
    

    执行:

    crontab -e
    add:
    10 0 * * * /opt/web/delete_log.sh >/dev/null 2>&1
    

    参考

    SnippetsLab

    这是一款很棒的做笔记软件,类似有道笔记,特别适合保存代码。
    特点:

    1. 支持直接拷贝代码,针对不同代码Java/Python/...语法高亮。
    2. 支持Markdown语法。
    3. 支持搜索。

    缺点:目前仅仅支持Mac平台。

    三级目录
    支持多种编程语言

    相关文章

      网友评论

        本文标题:周记 2017 4.10 - 4.16

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