欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

shell实例第23讲:每天定时备份nginx日志

发布时间:2025/6/15 编程问答 76 豆豆
生活随笔 收集整理的这篇文章主要介绍了 shell实例第23讲:每天定时备份nginx日志 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

             每天定时备份nginx日志

要求

每天凌晨3点开始备份nginx日志

一、编写日志切割脚本

#!/bin/bashLOG_DIR=/usr/local/webserver/nginx/logs/YESTERDAY_TIME=$(date -d "Yesterday Time" +%F)LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m")LOG_FILE_LIST="access.log"for LOG_FILE in $LOG_FILE_LIST do[ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIRmv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}done

说明:
(1)date + %F显示完整日期格式,等价于date +"%Y-%m-%d"(2015-12-07)
(2)参数-d:显示字符串所指的日期与时间,字符串前后必须加上双引号。例如:

date -d "1 day ago" +"%Y-%m-%d" 输出:2015-11-19 date -d "2 second" +"%Y-%m-%d %H:%M.%S" 输出:2015-11-20 14:21.31

(3)! -d $LOG_MONTH_DIR表示如果LOG_MONTH_DIR目录不存在

-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真-L filename 如果 filename为符号链接,则为真-r filename 如果 filename可读,则为真 -w filename 如果 filename可写,则为真 -x filename 如果 filename可执行,则为真-s filename 如果文件长度不为0,则为真-h filename 如果文件是软链接,则为真filename1 -nt filename2 如果 filename1比 filename2新,则为真。filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

(4)mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录。

二、配置系统定时任务/etc/crontab

每天凌晨3点执行切割日志

* 3 * * * /home/weibo/nginx_log_day.sh

说明:如何配置定时任务/etc/crontab

  *  *  *  *  *  command分 时  日  月  周  命令第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点) //例:第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令

例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart (每晚的21:30重启lighttpd ) 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart (每月1、10、22日的4 : 45重lighttpd) 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart (每周六、周日的1 : 10重启lighttpd) 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart (在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd) 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart (每星期六的11 : 00 pm重启lighttpd) * 6 * * * command (表示每天6点执行) * */6 * * * command (表示每过6个小时执行)

 

总结

以上是生活随笔为你收集整理的shell实例第23讲:每天定时备份nginx日志的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。