栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

实现Liunx下,nginx每日日志分割(shell+定时任务+nginx信号管理)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实现Liunx下,nginx每日日志分割(shell+定时任务+nginx信号管理)

文章目录
  • 前言
  • 一、自定义sh脚本:
  • 二、Crontab 编辑定时任务


前言 1.实际应用: shell+定时任务+nginx信号管理,完成日志按日期存储 分析思路: 凌晨00:00:01,把昨天的日志重命名,放在相应的目录下。 再USR1信息号控制nginx重新生成新的日志文件。 Crontab 编辑定时任务。
一、自定义sh脚本:
vim runlog.sh
#!/bin/bash
#LOGPATH 为 要备份的日志源目录
#basePATH 为 存储备份日志的目录
LOGPATH=/usr/local/nginx/logs/131test_access.log
basePATH=/data/nginx/logs/$(date -d yesterday +%Y%m%d)

# 新建文件夹 这里是安年月日来分
mkdir -p $basePATH
# 构建备份日志文件名
filename=$basePATH/$(date -d yesterday +%H%M).131test_access.log
#移动日志文件到备份目录下
mv $LOGPATH $filename
touch $LOGPATH
#使用USR1信息号控制nginx重新生成新的日志文件
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`               
二、Crontab 编辑定时任务

Linux crontab是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
而 linux 任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

crontab命令主要有3个参数:
  -e :编辑用户的crontab。
  -l :列出用户的crontab的内容。
  -r :删除用户的crontab的内容。
  
执行crontab -e,将自动打开编辑器,你可以编辑自己的crontab文件,语法和 /etc/crontab 文件一样,不同的只是,不必再指出执行的用户,编辑后保存即可。

crontab -l用来查看自己的crontab文件内能,crontab -r删除自己的crontab。

语法
crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }
基本格式 :

  • *  *  *  *  command
    分 时 日 月 周  命令
    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令
00 01 * * * /xxx/runlog.sh >/dev/null 2>&1  每天1时0分(建议在01-04点之间,系统负载小)

# 下面是列子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

注意清理系统用户的邮件日志
每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。
例如,可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

crontab的日志主要是查看定时任务运行问题
更好的做法是,将信息写入指定文件中,方便查看
0 6 * * *  /usr/bin/php test.php >> /home/log/crontab/mylog.log 2>&1
把错误和标准输出都写入到mylog.log中。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号