Linux定时任务实现定时清理nginx日志

Linux定时任务实现定时清理nginx日志

1.cron定时任务

1.1.安装crontabs
yum install contabs  #通过yum安装
systemctl enable crond  #设置开机启动
systemctl start crond   #启动
1.2.查看crontabs服务状态
service crond status
1.3.配置定时任务
//两个命令等价
vim /etc/crontab
crontab -e
1.4.查看定时任务
//两个命令等价
cat /etc/crontab
crontab -l
1.5.删除定时任务
crontab -r [user]  #如果指定[user],则默认删除当前用户的定时任务
# 其实是删除了/var/spool/cron目录下的定时任务文件,这个文件以当前用户命令
# 谨慎使用该命令
1.6.定时任务配置语法详解

定时任务语法

  • 第一个位置:分钟(0-59)
  • 第二个位置:小时(0-23)
  • 第三个位置:天(1-31)
  • 第四个位置:月(1-12)
  • 第五个位置:星期(0-6)
  • 第六个位置:用户名
  • 第七个位置:需要定时执行的脚本或者命令
1.7.定时任务案例
实例1:每1分钟执行一次command
命令:
* * * * * command

实例2:每小时的第3和第15分钟执行
命令:
3,15 * * * * command

实例3:在上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * * command

实例4:每隔两天的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 */2 * * command

实例5:每个星期一的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * 1 command

实例6:每晚的21:30重启smb
命令:
30 21 * * * /etc/init.d/smb restart

实例7:每月11022日的4 : 45重启smb
命令:
45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb
命令:
10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 0023 : 00之间每隔30分钟重启smb
命令:
0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb
命令:
0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb
命令:
* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb
命令:
* 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb
命令:
0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb
命令:
0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本
命令:
01 * * * * root run-parts /etc/cron.hourly

2.Nginx定时清理日志文件

2.1.清理思路

2.1.1.创建定时任务脚本,每天零点定时将日志文件命名为昨天的日志,重新生成日志文件,删除过期日志文件

#!/bin/bash
#每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重
#新打开日志文件
#Nginx日志文件所在目录
LOG_PATH=/usr/local/nginx/logs/
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#删除文件的日期
SEVENDAY=$(date --date="7 days ago" +%Y-%m-%d)
#获取pid文件路径
PID=/usr/local/nginx/logs/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
rm ${LOG_PATH}access-${SEVENDAY}.log
rm ${LOG_PATH}error-${SEVENDAY}.log
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`

2.1.2.创建定时任务

0 0 * * *  sh /home/online/clean.sh
2.2.注意事项

window系统写好的脚本传入到linux系统,脚本中换行符\r会被当成字符造成拼接命令报错,需要将文本中的\r进行删除或者替换

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值