zoukankan      html  css  js  c++  java
  • Linux定时清理日志脚本

      在应用疯狂打日志的情况下,服务器很容易被塞满磁盘。

      先要写一个shell脚本,脚本如下。

    #!/bin/bash
    #----------------使用规范----------------
    #1、该文件固定存放在linux的 /usr/local/zjport_test/delFiles 目录下
    #2、各责任人维护好要清理日志文件的目录,并以注释方式备注写明谁维护
    
    #find:linux的查找命令,用户查找指定条件的文件;
    #/opt/soft/log/:想要进行清理的任意目录;
    #-mtime:标准语句写法;
    #+3:查找3天前的文件,这里用数字代表天数;
    #"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
    #-exec:固定写法;
    #rm -rf:强制删除文件,包括目录;
    # {} ; :固定写法,一对大括号+空格++; 
    
    echo "del file start....."
    
    
    #find /home/logs/ -mtime +3 -name "*.log"  -exec rm -rf {} ;
    find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.log.*"  -exec rm -rf {} ;
    find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.out.*"  -exec rm -rf {} ;
    find /usr/local/tomcat/springboot-MIA-exchange/logs/islife -mtime +1 -name "*.log"  -exec rm -rf {} ;
    find /root/logs/islife -mtime +0 -name "*.log"  -exec rm -rf {} ;
    find /home/yw/logs  -mtime +1 -name "*.log*"  -exec rm -rf {} ;
    > /usr/local/tomcat7/logs/catalina.out;
    
    
    
    echo "del file end"

      然后要启动linux的crontab来定时运行这个脚本。

      crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本  -->相当于闹钟

    一、日志定期删除(Linux)

    1、将清理日志的shell脚本放在服务上。根据规定,定一个统一的路径和统一的命名规范。

    2、将文件添加到定时任务crontab

    crontab -e:编辑当前用户的定时任务
    
    crontab -l:查看当前用户的定时任务
    
    crontab -r:删除当前用户的定时任务

    3、脚本样例

    #!/bin/bash
    echo "del file start....."
    
    find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.log.*" -exec rm -rf {} ;
    find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.out.*" -exec rm -rf {} ;
    find /usr/local/tomcat/springboot-MIA-exchange/logs/islife -mtime +1 -name "*.log" -exec rm -rf {} ;
    find /root/logs/islife -mtime +0 -name "*.log" -exec rm -rf {} ;
    find /home/yw/logs -mtime +1 -name "*.log*" -exec rm -rf {} ;
    > /usr/local/tomcat/logs/catalina.out echo
    "del file end"

    4、crontab文件内容分析

    cat /etc/crontab

    HELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    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
    59 15 * * * /usr/local/zjport_test/delFiles/delFiles_192.168.3.134.sh >dev/null 2>&1

     -----

    前四行是用来配置crond任务运行的环境变量
    
    第一行SHELL变量指定了系统要使用哪个shell,这里是bash
    
    第二行PATH变量指定了系统执行命令的路径
    
    第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户
    
    如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
    
    第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
    
    小 结:
        数字的表示最好用2为阿拉伯数字显示
        周和日最好不要同时用
        定时任务要加注解
        可以定向到日志文件或者空文件
        定时任务一定是绝对路径,且目录必须存在才能出结果
        crontab 服务一定要开启运行

    # crontab时间问题
    最关键的,只有 5 个参数,没有 秒 参数。所以跟标准cron定时表达式不一样

    实例

    实例1:每1分钟执行一次cmd
    * * * * * cmd
    
    实例2:每小时的第3和第15分钟执行
    3,15 * * * * cmd
      
    实例3:在上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * * cmd
    
    实例4:每隔两天的上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2  *  * cmd
      
    实例5:每周一上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * 1 cmd
      
    实例6:每晚的21:30执行
    30 21 * * * cmd
    
    实例7:每月1、10、22日的4 : 45执行
    45 4 1,10,22 * * cmd
    
    实例8:每周六、周日的1 : 10执行
    10 1 * * 6,0 cmd
    
    实例9:每天18 : 00至23 : 00之间每隔30分钟执行
    */30 18-23 * * * cmd
    
    实例10:每星期六的晚上11 : 00 pm执行
    0 23 * * 6 cmd
    
    实例11:每一小时执行
    0 */1 * * * cmd
    
    实例12:晚上11点到早上7点之间,每隔一小时执行
    0 23-7 * * * cmd

    5、常用命令解释

    安装crontab:

    yum install crontabs

    crontab服务操作说明:

    /sbin/service crond start //启动服务
     
    /sbin/service crond stop //关闭服务
     
    /sbin/service crond restart //重启服务
     
    /sbin/service crond reload //重新载入配置

    查看crontab服务状态:

    service crond status

    手动启动crontab服务:

    service crond start

    查看crontab服务是否已设置为开机启动,执行命令:

    方法一: 界面启动      ntsysv 
    方法二: 加入开机自动启动:   chkconfig –level 35 crond on

    查看定时任务列表

    crontab -l

    编辑定时任务

    crontab –e    ==   vim /var/spool/cron/root
     

    crontab -r 删除定时任务

    ==> 从/var/spool/cron目录中删除用户的crontab文件
    ==> 如果不指定用户,则默认删除当前用户的crontab文件
     crontab –i  在删除用户的crontab文件时给确认提示

    备份crontab文件

    crontab -l > $HOME/mycron

    恢复丢失的crontab文件

    如果不小心误删了crontab文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:
    crontab <filename> 其中,<filename>是你在$ H O M E目录中副本的文件名。
    有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。
     -
  • 相关阅读:
    win7下配置pfn

    转(每天淘汰你自己)
    [asp]替换连续多个回车换行
    安装windows组件 提示 无法加载安装安装程序:Wbemupgd.dll
    asp.net三层结构例子
    sql2005下读取字段属性
    discuz数据表结构
    Ajax2.0 'Sys'未定义的解决办法
    .net(c#)读取flash(swf)文件的尺寸
  • 原文地址:https://www.cnblogs.com/dongye95/p/11810224.html
Copyright © 2011-2022 走看看