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种,如下列表格:
# 每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