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日志相关推荐
- shell实例第21讲:定时清空文件内容,定时记录文件大小
#!/bin/bash################################################################################# #每小时执行一 ...
- shell脚本采用crontab定时备份数据库日志
测试服务器上才用定时脚本备份一个数据库 并打包压缩成tar避免文件过大 脚本如下: 测试服务器的shell backup_mysql.sh #!/bin/bash BASE_PATH=/alidata ...
- shell实例第22讲:shell中分隔符IFS用法
shell中分隔符IFS用法 1.什么是IFS? IFS在shell中是分隔符的意思,即IFS这个变量中存放了分隔符. 2.IFS是全局变量还是局部变量? (1)linux中变量分两种:全局变量env ...
- shell实例第20讲:linux shell date的用法
linux shell date的用法 转自:https://www.cnblogs.com/faberbeta/p/linux-shell002.html 1.date中的参数 %% 一个文字的 % ...
- shell实例第18讲:利用gzexe加密shell脚本
利用gzexe加密shell脚本 gzexe_test.sh内容如下: #!/bin/bashecho "gzexe test!" 结果: 使用gzexe加密shell脚本命令:g ...
- shell实例第19讲:一个脚本中调用另一个脚本的3种方法
在Shell脚本中调用另一个脚本(3种方法) 准备:主脚本是second.sh,主脚本中调用first.sh 方法1:exec(1)执行方式:exec /home/weibo/shell_test/s ...
- shell实例第13讲:从FTP服务器下载文件
#!/bin/bash #作者:魏波 #时间:2017.02.04if [ $# -ne 1 ]; thenecho "Usage: $0 filename" fi dir=$(d ...
- shell实例第0讲:shell脚本完整pdf文档下载
shell脚本完整pdf文档下载 链接:https://pan.baidu.com/s/10NTBAHv0zyP-wDnlblVvLg 提取码:6myf shell脚本完整pdf文档目录如下:
- shell实例第9讲:判断用户输入的是否为IP地址
#!/bin/bash #作者:魏波 #时间:2017.02.04function check_ip(){IP=$1VALID_CHECK=$(echo $IP|awk -F. '$1<=255 ...
最新文章
- 【代码片段】如何使用CSS来快速定义多彩光标
- 微信和支付宝中的一些常用方法封装
- delphi socket 流的使用_Socket
- socket第三方库 AsyncSocket(GCDAsyncSocket)
- 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
- kelley c语言教程 机械工业出版社,北京工业大学2020年考研893软件工程学科专业基础考试大纲...
- QQ登录之后自动弹出“QQ网吧”怎么屏蔽?
- 自然语言处理入门(一)--搜狗新闻语料处理和word2vec词向量的训练
- 一般对称性和轮换对称性
- 修改火狐浏览器滚动条样式
- mysql自定义函数实现
- 【USB网络摄像头】基于mjpeg-streamer的视频采集与播放【QT上位机软件】
- 深度解析JavaScript原型链
- print函数的学习与总结
- 1985年全国计算机编程大赛,关于举办2021年“中国高校计算机大赛-团体程序设计天梯赛”校内选拔赛的通知...
- H3CS-WLAN 无线工程师认证-郝文凯-专题视频课程
- Drupal 7 模块开发 建立模块 第一个页面(hook_menu)
- ROS下DWA配置和A*配置
- SOLID Design Principles in C#
- Android之标准体重计算器
热门文章
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
- 数据库中范式的理解1NF、2NF、3NF
- JavaWeb手机短信实现前台利用JS获取随机验证码,倒计时效果
- 数据结构与算法JavaScript描述——链表
- telnet命令的使用
- iOS开发UI篇--UIScrollView思维导图[不断更新]
- POJ 1523 SPF
- silver light
- Adobe与Facebook联手推出Flash开发工具
- 为什么大多Virtual Globe程序纵向旋转效率比较低