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:每月1、10、22日的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 : 00至23 : 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进行删除或者替换