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.定时任务配置语法详解

Linux定时任务实现定时清理nginx日志_第1张图片

  • 第一个位置:分钟(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进行删除或者替换

你可能感兴趣的:(Linux,linux)