crontab定时清理10天前文件

@[TOC] crontab定时清理10天前文件

需求场景

搭建了日志服务器,日志文件夹10天就满。需要一个定时任务自动清理10天前的日志文件与文件夹

使用crontab实现

centos默认会安装crontab,查看是否安装:

rpm -qa | grep crontab

显示如下就说明已经安装
在这里插入图片描述
查看crontab运行状态

systemctl status crond

如下图,显示active,说明已经运行,默认开机自启动
在这里插入图片描述
编写sheel脚本,用root权限,文件需要可执行权限
文件名:auto-del-10-days-ago-log.sh

#!/bin/bash
#这个是打印时间,后面会讲到原因,正常不需要
date >> /var/log/date.txt 

directory="/var/log/remote/"
tenDaysAgo=$(date -d '10 days ago' +%s)
#先做打印测试
# find "$directory" -type f -mtime +10 -print
# find "$directory" -type d -empty -mtime +10 -print

find "$directory" -type f -mtime +10 -exec rm {} \;
find "$directory" -type d -empty -mtime +10 -exec rm -r {} \;

设置定时任务,有两种方式,
第一种:crontab -e
这种可以用crontab -l 查看,crontab -l的命令配置在/var/spool/cron/root 下

第二种:编辑文件/etc/crontab
这种无法通过crontab -l查看,只能通过 下述命令查看

cat /var/log/cron

编辑定时任务:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
#这一行是因为我系统时间问题,特意增加,后面会讲
CRON_TZ=Asia/Shanghai


# 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

#这就是我增加的任务,每天23:59自动清理10天前的文件
59 23 * * * root /bin/sh /root/auto-del-10-days-ago-log.sh

可通过查看日志发现是否执行

问题

配置上述完后,发现手动执行没问题,改成每分钟执行没问题,第二天通过cat /var/log/cron查看,发现执行了定时任务,但是时间点差了11个小时。但是系统时间,时区都对。
因为我时间同步用的ntpdate,这有个缺席就是过时不会自动同步,所以换了chrony

yum install chrony -y
systemctl enable chronyd && systemctl start chronyd
timedatectl
timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp yes
sed -i 's/server /#server /g' /etc/chrony.conf
sed -i '/#server 3.centos.pool.ntp.org iburst/a server ntp.gz.cvte.cn iburst' /etc/chrony.conf
systemctl restart chronyd
chronyc makestep
chronyc sources

查看时区:
more /etc/localtime
cat /etc/localtime
备份:
cp /etc/localtime /etc/localtime.bak
设置本地时区:
cp -pf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改 Contab 时区:
vim /etc/crontab
添加变量 CRON_TZ=Asia/Shanghai

改完这些后,就正常了,无需重启服务和系统

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值