• linux 设置定时任务执行清理日志脚本


    写在开头:

    为了写博客而写博客,写一个定时清理日志流程,顺便复习一些linux命令

    ”知其然,不需要知其所以然“

    反正就是一个到处复制粘贴大杂烩
     

    流程:

    0.查看磁盘占用情况

    为什么要清理日志文件呢

    因为写入日志一直在新增,会占据很多磁盘,早晚会爆炸的,所以要定时清理

    所以先看看磁盘占用情况

    命令:

    # df -lh
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2       8.6G  6.7G  1.5G  82% /
    tmpfs           250M   76K  250M   1% /dev/shm
    /dev/sda1       291M   33M  244M  12% /boot
    /dev/sr0        1.5G  1.5G     0 100% /media/Ubuntu 16.04 LTS i386
    

    解释:

    Used:已经使用的空间

    Avail:可以使用的空间

    Mounted on:挂载的目录

    关于挂载,也理解了好久哦,反正就是Linux“一切皆文件”!
     

    1.写一个shell脚本(.sh)

    写入命令:

    vi cleanlog.sh
    i 切换到输入模式,以输入字符。
    Esc 切换到一般模式
    :wq!表示强制保存退出
    :q!表示强制不保存退出,不对文件进行保存
    

    脚本内容:

    #! /bin/bash
    
    find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
    

    实例命令:

    find /usr/local/tomcat/logs/ -mtime +180 -name "*.log" -exec rm -rf {} \;
    

    解释:

    将/usr/local/tomcat/logs目录下所有180天前带".log"的文件删除

    参数说明:

    #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

    (bash是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh...)

    find:linux的查找命令,用户查找指定条件的文件;

    /usr/local/tomcat/logs/ /opt/soft/log/:想要进行清理的任意目录;

    -mtime:标准语句写法;

    +180:查找180天前的文件,这里用数字代表天数;

    ".log":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;

    -exec:固定写法;

    rm -rf:强制删除文件,包括目录;

    {} ; :固定写法,一对大括号+空格++;

    另一个写法:

    rm -rf `find 对应目录 -type f -mtime +180 -print`
    

    查看脚本内容

    more xx.sh
    

    2.给脚本添加权限

    命令:

    chmod +x ./test.sh  #使脚本具有执行权限
    ./test.sh  #执行脚本
    

    实例命令:

    chmod +777 cleanlog.sh
    

    解释:

    给cleanlog.sh赋予全部用户读写操作权限,是最大的权限值!

    参数说明

    r 读权限read 4

    w 写权限write 2

    x 操作权限execute 1

    权限数字对应权限组说明:

    总共分为4部分

    【文件或文件夹】【owner权限】【group权限】【others权限】

    【文件是-,文件夹是d】【r/w/x相加】【r/w/x相加】【r/w/x相加】

    Linux档案的基本权限就有九个

    分别是owner/group/others三种身份各有自己的read/write/execute权限。

    查看文件权限

    ll
    

    解释:

    linux下命令“ll”是“ls -l"的别名
     

    3.设置定时任务

    查看是否有定时任务

    crontab -l 
    

    新增调度任务

    cronteb -e
    

    脚本内容

    SHELL=
    PATH=
    MAILTO=
    HOME=
    
    0    12   *   *   *   mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
    #分  时   日   月  周  |《==============命令行=======================》|
    

    实例

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin
    MAILTO=chen
    HOME=/data/backup
    */5 01-06,13-18 * * * ./userbackup.sh test
    

    解释:

    每天的1点到6点和13点到18点,每隔5分钟执行命令

    参数说明:

    SHELL:系统要使用哪个shell

    PATH:系统定时任务执行的命令的路径,不要把这个PATH和系统环境变量认为是一样,二者没有关系,在系统环境变量里面配置的路径在这里不能生效。

    MAILTO:用来接收邮件的用户,默认是root,邮箱的内容会保存在"/var/spool/mail/root"文件中。

    HOME:系统定时任务的家目录。

  • 相关阅读:
    go多平台编译打包
    正则表达式
    Java 线程安全问题的本质
    Thread interrupt() 线程中断的详细说明
    git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags origin master:master Logon failed, use ctrl+c to cancel basic credential prompt.
    kafka 消费组功能验证以及消费者数据重复数据丢失问题说明 3
    kafka 副本机制和容错处理 -2
    Mat使用详解
    MySql Binlog 说明 & Canal 集成MySql的更新异常说明 & MySql Binlog 常用命令汇总
    ElasticSearch 集群基本概念及常用操作汇总(建议收藏)
  • 原文地址:https://www.cnblogs.com/alwayszzj/p/15747673.html
Copyright © 2020-2023  润新知