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

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

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

找到个网上的脚本:

#!/bin/bash

log_path=""         #此处定义你的日志文件夹路径
expried_time= #此处定义你的日志过期时间,如7天 function mvLogs(){
# 获取系统时间,所有时间格式都是秒
local currentDate=`date +%s`
echo "current date: " $currentDate for file in `find $ -name "*.log"` #此处定义文件名格式,避免误删
do
local name=$file
local modifyDate=$(stat -c %Y $file) #对比时间,算出日志存在时间,距离最近一次修改
local logExistTime=$(($currentDate - $modifyDate))
logExistTime=$(($logExistTime/)) 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 $ -name "*.log.*"` #此处定义文件名格式,避免误删
do
local name=$file
local modifyDate=$(stat -c %Y $file) #对比时间,算出日志存在时间,距离最近一次修改
local logExistTime=$(($currentDate - $modifyDate))
logExistTime=$(($logExistTime/)) if [ $logExistTime -gt $expried_time ]; then
echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: yes"
cp $file /mnt/newlogs/$/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=;
SERVERS="web1 web2";
function mvLogs(){
for server in $SERVERS;do
echo $server;
local machine="svr_"$server;
echo $machine;
ssh admin@$machine "sh /home/admin/logcheck/mvlog.sh "$server" "$expried_timedone
}
mvLogs

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

crontab

修改本用户下的定时任务:
crontab -e
查看本用户下的定时任务
crontab -l

配置如下:

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

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

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

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

传个图片玩~

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

  1. 时间作为横轴的图表(morris.js)超越昨天的自己系列(8)

    超越昨天的自己系列(8) morris.js的官网有详细的例子:http://www.oesmith.co.uk/morris.js/ 特别注意它的依赖: <link rel="sty ...

  2. spring和redis的整合-超越昨天的自己系列(7)

    超越昨天的自己系列(7) 扯淡:  最近一直在慢慢多学习各个组件,自己搭建出一些想法.是一个涉猎的过程,慢慢意识到知识是可以融汇贯通,举一反三的,不过前提好像是研究的比较深,有了自己的见解.自认为学习 ...

  3. maven为不同环境打包(hibernate)-超越昨天的自己系列(6)

    超越昨天的自己系列(6) 使用ibatis开发中,耗在dao层的开发时间,调试时间,差错时间,以及适应修改需求的时间太长,导致项目看起来就添删改查,却特别费力.   在项目性能要求不高的情况下,开始寻 ...

  4. HashMap归档-超越昨天的自己系列

    java HashMap 读一下源码,一个数组存储数据: transient Entry[] table; 内部存key和value的内部类: static class Entry<K,V> ...

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

    点进Collections.reverse的代码瞄了眼,然后就开始了一些基础知识的收集. 现在发现知道的越多,知道不知道的越多. 列几个记录下: reverse方法源码: /** * Reverses ...

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

    java进程load过高分析步骤: top 查看java进程情况     top -Hp 查看某个进程的具体线程情况   printf 0x%x 确认哪一个线程占用cpu比较多,拿出来转成16进制   ...

  7. 快速用springmvc搭建web应用-超越昨天的自己系列(10)

    Demo地址:http://pan.baidu.com/s/1sjttKWd 创建命令: mvn archetype:generate -DgroupId=com.witown.open.demo - ...

  8. 如何查看crontab的日志记录

    在Unix和类Unix的操作系统之中,crontab命令常用于设置周期性被执行的指令,也可以理解为设置定时任务. crontab中的定时任务有时候没有成功执行,什么原因呢?这时就需要去日志里去分析一下 ...

  9. Shell + crontab 实现日志压缩归档

    Shell + crontab 实现日志压缩归档 crontab # archive the ats log days. */ * * * * root /bin/>& shell #! ...

随机推荐

  1. js获取url参数 兼容某些带#url

    网上有大把现成的代码,不过有点小小的瑕疵 例如目前最流行的 正则法: function getArgument(_arg) { var reg = new RegExp("(^|&) ...

  2. MFC编程入门之七(对话框:为对话框添加控件)

    创建对话框资源需要创建对话框模板.修改对话框属性.为对话框添加各种控件等步骤,前面一讲中已经讲了创建对话框模板和修改对话框属性,本节继续讲如何为对话框添加控件.  上一节中创建了一个名为"A ...

  3. 【转载】CSS position属性和实例应用

    目前几乎所有主流的浏览器都支持position属性("inherit"除外,"inherit"不支持所有包括IE8和之前版本IE浏览器,IE9.IE10还没测试 ...

  4. Deep Learning 16:用自编码器对数据进行降维_读论文“Reducing the Dimensionality of Data with Neural Networks”的笔记

    前言 论文“Reducing the Dimensionality of Data with Neural Networks”是深度学习鼻祖hinton于2006年发表于<SCIENCE > ...

  5. C语言混乱代码大赛

    main() {printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0 ...

  6. HashSet其实就那么一回事儿之源码浅析

    上篇文章<HashMap其实就那么一回事儿之源码浅析>介绍了hashMap,  本次将带大家看看HashSet, HashSet其实就是基于HashMap实现, 因此,熟悉了HashMap ...

  7. CTSC2015 酱油记

    终于又到写酱油记的时间了...不过开心不起来诶.. Day 0 晚上睡不着觉也不造为啥... 起来看了一本亚里亚小说,继续睡,睡不着... 又起来看了一本亚里亚小说,继续睡,睡不着... 然后...死 ...

  8. apache下自定义404错误页面

    404页面的目的是:告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开. 很多开源系统包括CMS系统.Blog系统等不提供404页面或提供的404页面并未达到SE ...

  9. IBatis.Net XML文件配置

    一.添加Provider.config <?xml version="1.0" encoding="utf-8"?> <providers x ...

  10. cocoapods 更新失败 bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)

    http://blog.csdn.net/dark_gmn/article/details/49274993 ERROR:  Could not find a valid gem 'cocoapods ...