定时执行系统及容器日志清理

1. find

1.1. find简介

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

1.2. find命令格式

find 搜索路径 [选项] 搜索内容

find 是比较特殊的命令,它有两个参数:

  • 第一个参数用来指定搜索路径;
  • 第二个参数用来指定搜索内容。

详细的命令参数可以通过man手册查找,在此仅列出常用的用法

1.3. 按照文件名或者正则表达式搜索

文件名选项:

  • -name: 按照文件名搜索;
  • -iname: 按照文件名搜索,不区分文件名大小;
  • -inum: 按照 inode 号搜索;

例如,查找/etc/目录下,文件名为httpd.conf的文件

find /etc -name httpd.conf

查找/etc/目录下所有以.conf结尾的文件

find /etc -name *.conf

1.4. 按照文件类型搜索

文件类型选项:

  • -type f 普通文件
  • -type l 符号连接
  • -type d 目录
  • -type c 字符设备
  • -type b 块设备
  • -type s 套接字
  • -type p fifo管道文件

例如,查找/dev目录下的块设备文件

find /dev -type b

查找/etc目录下的普通文件

find /etc -type f

1.5. 按照文件大小搜索

文件大小选项:

  • -size[±]大小:按照指定大小搜索文件,“+“的意思是搜索比指定大小还要大的文件,”-” 的意思是搜索比指定大小还要小的文件

文件大小单元:

  • b 块(512字节)
  • c 字节
  • w 字(2字节)
  • k 千字节
  • M 兆字节
  • G 吉字节

例如,搜索/var/log目录下大于10M的文件

find /var/log -type f -size +10M

搜索/etc目录下等于4k的文件

find /etc -type f -size 4k

1.6. 按照修改时间搜索

时间选项:

  • -atime [±]天,-amin [±]分钟:按照文件访问时间搜索,用户最近一次访问时间。
  • -mtime [±]天,-mmin [±]分钟:按照文改时间搜索,文件最后一次修改时间。
  • -ctime [±]天,-cmin [±]分钟:按照文件修改时间搜索,文件数据元(例如权限等)最后一次修改时间。

例如,搜索/etc/目录下最近七天内被修改过的所有文件

find /etc -type f -mtime -7

搜索/etc/目录下恰好在七天前被访问过的所有文件

find /etc -type f -atime 7

搜索/etc/目录下超过七天内被访问过的所有文件

find /etc -type f -atime +7

搜索/etc/目录下访问时间超过10分钟的所有文件

find /etc -type f -amin +10

1.7. 按照权限搜索

权限选项:

  • -perm 权限模式:査找文件权限刚好等于"权限模式"的文件
  • -perm -权限模式:査找文件权限全部包含"权限模式"的文件
  • -perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件

例如,搜索/etc/目录下权限为000的文件,找的权限必须和指定的权限模式一模一样

find /etc -type f -perm 000

搜索/etc/目录下权限全部包含644的文件,文件的权限必须全部包含搜索命令指定的权限模式

find /etc -type f -perm -664

1.8. 按照所有者和所属组搜索

所有者和所属组选项:

  • -uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件
  • -gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件
  • -user 用户名:按照用户名査找所有者是指定用户的文件
  • -group 组名:按照组名査找所属组是指定用户组的文件
  • -nouser:査找没有所有者的文件

例如,搜索/etc/目录下所属组为dnsmasq的文件

find /etc -type f -group dnsmasq

1.9. 按照逻辑运算符

逻辑运算符选项:

  • -a:and逻辑与
  • -o:or逻辑或
  • -not:not逻辑非

例如,搜索/etc/目录下搜索大于2KB,并且文件类型是普通文件的文件

find /etc -size +2k -a -type f

1.10. -exec选项和 -ok选项

exec选项的格式:
find 搜索路径 [选项] 搜索内容 -exec 命令2{} ;

请大家注意这里的"{}“和”;“是标准格式,只要执行”-exec"选项,这两个符号必须完整输入。

“-ok"选项和”-exec"选项的作用基本一致,区别在于:“-exec"的命令会直接处理,而不询问;”-ok"的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。

例如,使用"-exec"选项,把find命令的结果直接交给"cat"命令处理

find /etc -name httpd.conf -exec cat {} \;

2. crontab

2.1. crontab语法和操作符

Crontab(cron表)是一个定义cron作业时间表的文本文件。Crontab文件可以用crontab命令来创建、查看、修改和删除。

用户crontab文件中的每一行都包含六个字段,用空格隔开,后面是要运行的命令。

* * * * * command(s)
^ ^ ^ ^ ^
| | | | |     allowed values
| | | | |     -------
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Crontab 字段含义:

  • 分钟(0-59):表示一小时内的哪一分钟执行任务。
  • 小时(0-23):表示一天内的哪个小时执行任务。
  • 日期(1-31):表示一个月内的哪一天执行任务。
  • 月份(1-12):表示一年中的哪个月执行任务。
  • 星期几(0-7,其中0和7都表示星期天):表示一周中的哪一天执行任务。

字段还可以包含特殊字符:

  • *:表示匹配所有可能的值。例如,*在分钟字段中表示每分钟都执行。
  • ,:用于指定多个值。例如,1,3,5表示匹配1、3和5。
  • -:用于指定一个范围。例如,2-4表示匹配2、3和4。
  • /:用于指定一个间隔。例如,/2表示每隔2个单位匹配一次。在分钟字段中,/2表示每2分钟一次。

2.2. 每分钟、每小时、每天、每周定时执行

crontab每分钟定时执行

*/1 * * * * command

crontab每小时定时执行

0 */1 * * * command

crontab每天定时执行

0 0 * * * command //每天0点执行

crontab每周定时执行

0 0 * * 1 command //每周一0点执行

2.3. 每周一、三、五的上午10点和下午3点执行任务

每周一、三、五的上午10点和下午3点执行任务

0 10,15 * * 1,3,5 command

2.4. 每月的1号和15号执行任务

0 0 1,15 * * command

2.5. 每隔3天执行一次任务

0 0 */3 * *  command

2.6. 每小时的第15分钟执行任务,但在周末不执行

15 * * * 1-5 command

3. 定时清理

3.1 日志清理脚本

vim /opt/autoclean.sh

#!/bin/bash
dockerlog=/var/lib/docker/volumes/
syslog=/var/log/
cd $dockerlog
find ./ -name '*.log*' -mtime +7 -type f -size +1G -exec rm -fr {} \;
find ./ -name '*.log*' -mtime +30 -exec rm -fr {} \;
cd $syslog
find ./ -name '*.log*' -mtime +7 -type f -size +1G -exec rm -fr {} \;
find ./ -name '*.log*' -mtime +30 -exec rm -fr {} \;
chmod +x /opt/autoclean.sh

3.2 定时执行脚本

每周日的0点执行任务

0 0 * * * 7 /opt/autoclean.sh

4. 参考文献

  • https://www.cnblogs.com/jiftle/p/9707518.html
  • https://c.biancheng.net/view/779.html
  • https://www.cnblogs.com/lcword/p/17723085.html
  • https://blog.csdn.net/xaiodang/article/details/108773804
  • https://cloud.tencent.com/developer/article/2336089
  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值