crontab 移动日志-超越昨天的自己系列(12)

linux上定时执行某些脚本是管理服务器的时候比较常用的场景,比如定时检查进程是否存在,定时启动或关闭进程,定时检查日志删除日志等。

当我打开google百度crontab时长篇大论的一大堆,详细解释的一大堆,各种抄来抄去,现在觉得资源多了未必是好事。

假设是定时执行shell,来移动log文件

找到个网上的脚本:

#!/bin/bash

log_path=""         #此处定义你的日志文件夹路径
expried_time=7      #此处定义你的日志过期时间,如7天

function mvLogs(){
    # 获取系统时间,所有时间格式都是秒
    local currentDate=`date +%s`
    echo "current date: " $currentDate

    for file in `find $1 -name "*.log"` #此处定义文件名格式,避免误删
    do
        local name=$file
        local modifyDate=$(stat -c %Y $file)

        #对比时间,算出日志存在时间,距离最近一次修改
        local logExistTime=$(($currentDate - $modifyDate))
        logExistTime=$(($logExistTime/86400))

        if [ $logExistTime -gt $expried_time ]; then
            echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: yes"
            #rm -f $file
        else
            echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: no"
        fi
    done
}
mvLogs /home/admin/web-deploy/logs

我的需求:线上有web1 web2 两台机器,后面是一台发布机器。

  需要检查web1和web2的机器上的log文件,如果超出3天,就讲这些文件移入mount的文件夹内,目录区分web1,web2。

放在web机器上的脚本修改:


#!/bin/bash
#传入参数为扫描文件夹路径
function mvLogs(){
    echo "-----------------------------------------------------------"
    date +"%Y-%m-%d %H:%M"
    # 获取系统时间,所有时间格式都是秒
    local currentDate=`date +%s`
    echo "current date: " $currentDate

    for file in `find $1 -name "*.log.*"` #此处定义文件名格式,避免误删
    do
        local name=$file
        local modifyDate=$(stat -c %Y $file)

        #对比时间,算出日志存在时间,距离最近一次修改
        local logExistTime=$(($currentDate - $modifyDate))
        logExistTime=$(($logExistTime/86400))

        if [ $logExistTime -gt $expried_time ]; then
            echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: yes"
            cp $file /mnt/newlogs/$2/web
            #rm $file;
        else
            echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: no"
        fi
    done
}
mvLogs /home/admin/web-deploy/logs $machine_name

那么我只需要在发布机器上调用web机器上的这个脚本,就可以检查web机器本地log情况,并处理。需要传机器代号,如web1。

发布机上的脚本:

#!/bin/bash
expried_time=3;
SERVERS="web1 web2";
function mvLogs(){
    for server in $SERVERS;do
        echo $server;
        local machine="svr_"$server;
        echo $machine;
        ssh [email protected]$machine "sh /home/admin/logcheck/mvlog.sh "$server" "$expried_timedone
}
mvLogs

这样就可以再发布机上控制比对时间了。

crontab

修改本用户下的定时任务:

crontab -e

查看本用户下的定时任务

crontab -l

配置如下:

45 15 * * * sh /home/productscm/logcheck/mvlog.sh >> /home/productscm/logcheck/log/mvlog.log 2>&1

如此就会在每天的15点45分是执行上面的逻辑。

*/1 * * * * sh /home/productscm/logcheck/mvlog.sh >> /home/productscm/logcheck/log/mvlog.log 2>&1

一分钟执行一次 用来测试 哈哈~

传个图片玩~

时间: 2024-08-08 03:54:38

crontab 移动日志-超越昨天的自己系列(12)的相关文章

java进程性能分析步骤-超越昨天的自己系列(11)

java进程load过高分析步骤: top 查看java进程情况 top -Hp 32323 查看某个进程的具体线程情况 printf 0x%x 31973 确认哪一个线程占用cpu比较多,拿出来转成16进制 jstack 32323> jstack.log 注:jstack命令必须由当前运行的java进程用户执行,否则会出现“12377: Operation not permitted”错误 最后: 在jstack.log  中查询相关线程的信息

Collections.reverse 代码思考-超越昨天的自己系列(13)

点进Collections.reverse的代码瞄了眼,然后就开始了一些基础知识的收集. 现在发现知道的越多,知道不知道的越多. 列几个记录下: reverse方法源码: /** * Reverses the order of the elements in the specified list.<p> * * This method runs in linear time. * * @param list the list whose elements are to be reversed.

Shell + crontab 实现日志压缩归档

Shell + crontab 实现日志压缩归档 crontab 1 # archive the ats log file, keep 7 days. 2 */5 * * * * root /bin/sh /path/archive_atslog.sh >/dev/null 2>&1 shell 1 #!/bin/bash 2 # Author : standby 3 # Date : 2017-04-17 4 # Description : Archive the live log,

如何查看crontab的日志记录

在Unix和类Unix的操作系统之中,crontab命令常用于设置周期性被执行的指令,也可以理解为设置定时任务. crontab中的定时任务有时候没有成功执行,什么原因呢?这时就需要去日志里去分析一下了,那该如何查看crontab的日志记录呢? 1. linux 看 /var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log观察 2. unix 在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail

EMVTag系列12——卡片内部风险管理数据

?  9F53    连续脱机交易限制数(国际-货币) L: 1 -C(有条件):如果执行国际-货币频度检查 PBOC专有数据元. 不使用指定应用货币的连续脱机交易次数最大数,超过后交易请求联机 模板推荐值: 0 ?  9F54    累计脱机交易金额限制数 L: 6 -C(有条件):如果执行累计金额频度检查 PBOC专有数据.累计脱机交易金额的最大限制.超过交易请求联机 模板推荐值:00 00 00 00 00 00 ?  9F77    电子现金余额上限 电子现金余额上限:表示在电子现金应用

Skype For Business 2015实战系列12:安装前端服务器

Skype For Business 2015实战系列12:安装前端服务器 配置Front01: 打开Skype for Business Server部署向导,点击"安装或更新Skype for Business Server系统": 安装本地配置存储: 点击"运行": 点击下一步: 安装完成,点击完成: 安装或删除Skype for Business Server组建: 点击运行: 点击下一步: 安装完成,点击完成: 请求.安装或分配证书: 点击运行: 输入基本

Java JUC之Atomic系列12大类实例讲解和原理分解

Java JUC之Atomic系列12大类实例讲解和原理分解 2013-02-21      0个评论       作者:xieyuooo 收藏    我要投稿 在java6以后我们不但接触到了Lock相关的锁,也接触到了很多更加乐观的原子修改操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,以及并发中的ABA问题,本文讲述Atomic系列的类的实现以及使用方法,其中包含: 基本类:AtomicInteger.AtomicLong.Atomic

Spring基础系列12 -- Spring AOP AspectJ

Spring基础系列12 -- Spring AOP AspectJ 转载:http://www.cnblogs.com/leiOOlei/p/3613352.html 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代码. Pointcut:注入Advice的位置,切入点,一般为某方法. Advisor:Advice和Pointcut的结合单元,以便将Advice和Pointcut分开实现灵活配置. Aspe

SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】

注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系[email protected],敬请朋友们斧正,谢谢. 不知不觉已经把Spring的基础部分讲解完了,所讲述的都是在项目中经常用到的东西,是经得住考验的,接下来的部分主要是要讲述使用SpringMVC进行的文件上传.处理Ajax请求.自定义拦截器功能的实现,不多说了,首先讲解文件上传部分,开始--