文章目录

  • 日志清理命令
  • 添加定时任务
  • FAQ

日志清理命令

  • 清理指定路径下两天前*.log和*.log.的文件:
    find 路径 -mtime +2 -name "
    .log" -o -name “.log.” -exec rm -rf {} ;

  • 清理指定路径下大于50M的文件:
    find 路径 -type f -size +50M -name “*.out” | xargs truncate -s 0;

  • 日志清理脚本编写思路
    把路径配置在一个文件里,然后循环读取路径,挨个清理。

vim cleanlog.shfor path in $(cat /root/cleanlog/path.conf)
dofind $path -mtime +2 -name "*.log"  -exec rm -rf {} \;
done

添加定时任务

  • 在/var/spool/cron/用户名下添加cron表达式,例如root用户,则编辑/var/spool/cron/root,或者用【crontab -e】编辑,【crontab -l】可以查看定时任务

如在每天凌晨过五分清理一次日志

root] vim /var/spool/cron/root添加
5 0 * * * /root/cleanlog/cleanlog.sh
  • cron脚本编写思路
    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:

(1) Seconds Minutes Hours DayofMonth Month DayofWeek Year

(2)Seconds Minutes Hours DayofMonth Month DayofWeek
  
每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:

(1):表示匹配该域的任意值。假如在Minutes域使用, 即表示每分钟都会触发事件。

(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。

(3)-:表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次

(4)/:表示起始时间开始触发,然后每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.

(5),:表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。

(6)L:表示最后,只能出现在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。

(7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 。

(8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。

(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。

三、常用表达式例子

(1)0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务

(2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业

(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作

(4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

(5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时

(6)0 0 12 ? * WED 表示每个星期三中午12点

(7)0 0 12 * * ? 每天中午12点触发

(8)0 15 10 ? * * 每天上午10:15触发

(9)0 15 10 * * ? 每天上午10:15触发

(10)0 15 10 * * ? * 每天上午10:15触发

(11)0 15 10 * * ? 2005 2005年的每天上午10:15触发

(12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发

(13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发

(14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

FAQ

  1. 定时任务不执行的原因?
  • crond服务未启动

crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它:

crond

service crond start

如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装:

yum -y install crontabs

  • 权限问题
    比如:脚本没有x执行权限,解决方法:

增加执行权限,或者用bash abc.sh的方法执行

也有可能crontab任务所属的用户对某个目录没有写权限,也会失败

  • 路径问题
    有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行

./test.sh

就可以了。但是在crontab中,就会找不到这个脚本,比如写完整:

/root/test.sh

  • 时差问题
    注意定时任务是按服务器上的时间执行的

参考文档:
https://blog.csdn.net/u011734144/article/details/54576469
https://www.cnblogs.com/javahr/p/8318728.html

linux日志定时清理相关推荐

  1. Linux应用--日志定时清理

    上篇文章写到了在工作中遇到的一个因为磁盘空间占满导致的问题,因应用每天都要写日志,所以如果不定时对部署应用的服务器进行清理的话会经常遇到这样的问题.为避免相似的问题发生,今天总结一个Linux日志定时 ...

  2. Linux后台日志定时清理脚本

    一. 简介 linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否 ...

  3. Linux脚本定时清理日志任务

    定时清理日志任务 前言 一.定时清理简述 1.1查看/etc/crontab文件 1.2 删除文件命令 1.3 给脚本添加权限: 1.4 将脚本添加到定时任务 2.计划任务 2.1创建shell 2. ...

  4. Linux服务器定时清理日志文件、Linux cron定时任务

    文章目录 1. 准备工作 2. 脚本实现 2.1 执行命令准备 2.2.Linux 下创建定时任务-crontab 2.2.1.crontab 常用命令 2.2.2 命令行操作 3.附甜点 cron校 ...

  5. Nginx日志定时清理

    升级风险: 注释:由于nginx记录所有LIS60服务请求日志,长期以往这些日志堆积占用服务器资源,为了避免服务器资源浪费,定时清理. 脚本下载:cron定时执行脚本包-Linux文档类资源-CSDN ...

  6. linux日志自动清理归档,Linux系统实现log日志自动清理

    背景简介 在实际项目中由于服务器内存有限,人工制定的定时清理时常会忘记.因此启用linux系统定时任务去执行日志清理功能.引用文献 1.创建shell脚本及执行权限 touch clean.sh // ...

  7. kafka 3.0 日志定时清理(源码)

    文章目录 1.定时任务入口 2.LopManager(这个是日志抽象层,实际逻辑不在这里) (1) 把日志清理加入定时任务中 3.清理符合条件的日志 (1)deletableSegments(把需要删 ...

  8. linux下定时清理磁盘日志步骤

    1.编写清理日志的shell脚本 #! /bin/bash #进入要清理文件的路径 cd /XX/bin #echo "please clear startserver1.log and s ...

  9. linux下定时清理日志任务

    1.创建定时清除日志脚本(/usr/local目录下) mkdir scriptTask  创建脚本文件夹,存放所有的脚本 在scriptTask 目录下创建脚本 find 对应目录 -mtime + ...

最新文章

  1. 移动安全问题不可掉以轻心,Check Point剖析近日移动安全问题
  2. 设置sqlplus环境变量
  3. java中volatile的含义_java中volatile关键字的含义
  4. 最简单的基于FFmpeg的AVDevice例子(屏幕录制)
  5. 两种方式解决 生产者消费者问题
  6. VirtualBox中虚拟Ubuntu添加新的虚拟硬盘
  7. 美国国土安全部发布物联网安全最佳实践
  8. 全球首家机器人酒店“大裁员”!别了,人工智障
  9. Github更优雅的使用:Chrome插件推荐
  10. 这是一篇优雅的Springboot2.0使用手册 1
  11. 【AD】Altium Designer PCB文件的绘制(上篇:PCB基础和布局)
  12. 医院预约挂号系统 ssm
  13. 【渝粤题库】广东开放大学 招投标与合同管理 形成性考核 (2)
  14. 《IT行业职位介绍-搞懂高级程序员、架构师、技术总监、CTO从薪资到技能的区别》
  15. 为什么发音要浊化(sp、st、sk)
  16. vue通过disabled控制按钮的置灰
  17. 2020-2021读书记录
  18. 徒手撸平台——基于Springboot+layui实现接口自动化平台
  19. 未明学院:来自券商研究所搬砖狗的自白
  20. 为Exynos4412移植U-Boot-2017.11的步骤(一)——让U-Boot跑起来

热门文章

  1. Linux Kdump 机制详解
  2. Running the evict task with compensationTime
  3. 使用python爬取豆瓣
  4. 安全测试都不敢写精通,还敢要25K?
  5. java io printwriter_Java中的Java.io.PrintWriter类| 1 - Break易站
  6. 氮化镓(GaN)功率半导体之预测
  7. a76比a73强多少_Arm Cortex-A76的微架构改进了什么?
  8. Hadoop读写操作(HDFS运行机制)
  9. listView1.Items.Add()与 listView1.Items[i].SubItems.Add()区别
  10. IE11浏览器设置为兼容不同IE版本