Linux定时任务crontab管理维护日志(附脚本)

开发过程中,服务器会产生很多日志,随着日志越来越多,日志文件越来越大,磁盘的占用也会增大。所以使用linux的定时任务来管理维护日志是必不可少的!首先,要了解一下Linux的定时任务!

Linux定时任务crontab

/etc/crontab此文件负责调度各种管理和维护任务,在/etc/下还能看到很多目录/etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly都是用来存放定时任务执行的脚本,可以很清楚的就能找到每小时/天/星期或者每月执行一次的脚本!

常用命令
# 查看定时任务表
crontab -l
# 编辑定时任务表
crontab -e
# 删除定时任务表
crontab -r
cron表达式

定时任务是通过cron表达式编写的一个执行单元(简单来说就是一条命令),命令分为 时间+动作 (关于动作就比如:可以去执行脚本、或执行服务等等),其中时间可以分为分、时、日、月、周五种,操作符有4种,如下列表格:

操作符 说明
* 取值范围内的所有数字
/ 每过多少个数字
- 从X到Z
, 散列数字
# 每1分钟执行一次
* * * * *
# 每小时的第3和第15分钟执行
3,15 * * * *
# 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * *
# 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  *
# 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1
# 每晚的21:30执行
30 21 * * *
# 每月1、10、22日的4:45执行
45 4 1,10,22 * *
# 每周六、周日的1:10执行
10 1 * * 6,0
# 每天18:00至23:00之间每隔30分钟执行
0,30 18-23 * * *
# 每星期六的晚上11:00pm执行
0 23 * * 6
# 每一小时执行
0 */1 * * *
# 晚上11点到早上7点之间,每隔一小时执行
0 23-7/1 * * *

日志管理维护

需求: nginx的error.log和access.log需要每天在23:55进行打包(格式:error_date +%Y-%m-%d.tar.gz),和清空日志文件并保留15天

前置操作:

cd /data/openresty/nginx/logs/
mkdir script
# 创建脚本,然后粘贴以下脚本内容,并保存
touch clean_log.sh
# 附加执行权限
chmod -x clean_log.sh

脚本内容如下:

#!/bin/bash

#定义变量
fileName=access.log
fileName1=error.log
logs_dir=/data/openresty/nginx/logs
bak_file=access_`date +%Y-%m-%d`
bak_file1=error_`date +%Y-%m-%d`

#执行压缩文件的命令
tar -zcvf $logs_dir/$bak_file.tar.gz  $logs_dir/access.log
tar -zcvf $logs_dir/$bak_file1.tar.gz  $logs_dir/error.log

echo "job is beging......."
# >文件 为清空该文件内容
>$logs_dir/$fileName
# 查询到超过15天的文件就删除掉,可以通过-name "error.log"指定删除文件,也删除全部满足条件的文件
find /data/openresty/nginx/logs -mtime +15 -exec rm -rf {} \;
>$logs_dir/$fileName1
find /data/openresty/nginx/logs -mtime +15 -exec rm -rf {} \;  
echo "job is end......."
\

编辑定时任务列表

# 编辑定时任务粘贴以下内容至定时任务列表中
crontab -e
# 粘贴以下内容至定时任务列表中
55 23 * * * sh /data/openresty/nginx/logs/scripts/clean_log.sh

# 保存并退出后,你会发现以下内容,证明更新了定时任务列表
# 最后就等待定时任务自己执行就可以了,如果你测试的话可以执行每分钟执行一次,先看一次定时任务执行后的结果!
crontab: installing new crontab
上一篇:实操篇 crond任务调度


下一篇:12.crond任务调度