CentOS下的日志切割
在Linux下,日志会不停的增长,为了防止日志文件过大,导致我们无法在日志中快速找到想要的信息,我们会定时对日志文件进行切割。在这里我将使用logrotate切割日志。
(1).logrotate的配置文件
logrotate配置文件主要在两个地方:/etc/logrotate.conf以及/etc/logrotate.d/下的明细配置文件。
其中/etc/logrotate.conf文件是主配置文件,/etc/logrotate.d/下的明细配置文件都会被读入/etc/logrotate.conf进行执行,所以请注意这里还涉及到了公有变量和私有变量。
logrotate的执行是由crond服务来调用的,其脚本是/etc/cron.daily/logrotate,每天自动执行。我们可以看一下脚本具体内容:
[root@xuexi ~]# cat /etc/cron.daily/logrotate
#!/bin/sh /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
简单的说明下,就是/usr/sbin/logrotate工具调用了/var/lib/logrotate/logrotate.status和/etc/logrotate.conf两个文件。然后将执行的结果(就是那个$?,成功为0,不成功为非0)进行判断,非0时执行/usr/bin/logger命令。最后退出。
看完定时计划任务,我们再来看主配置文件/etc/logrotate.conf(也就是公有变量)。具体内容如下:
[root@xuexi ~]# grep -vE "^$|^#" /etc/logrotate.conf
weekly //每周一次rotate(翻译是旋转,其实就是切割)
rotate 4 //保留4份切割文件,多余删除,不计算新建日志文件
create //结束后创建一个新的空白日志文件
dateext //用日期作为切切割文件的后缀
include /etc/logrotate.d //将/etc/logrotate.d目录下的文件都加载进来(全都执行)
/var/log/wtmp { //仅针对/var/log/wtmp文件
monthly //每月执行一次
create 0664 root utmp //结束后创建新的空白日志,权限0664,所有者root,所属组utmp
minsize 1M //切割文件最少需要1M,否则不执行
rotate 1 //保留1份,多余删除,不计算新建日志文件
}
/var/log/btmp { //仅针对/var/log/btmp
missingok //丢失不报错
monthly //每月执行一次
create 0600 root utmp //结束后创建新的空白日志,权限0600,所有者root,所属组utmp
rotate 1 //保留1份,多余删除,不计算新建日志文件
}
配置文件参数说明:
missingok 日志切割期间产生错误将被忽略(如果日志丢失,不报错继续切割)
daily、weekly、monthly、yearly 每天、每周、每月、每年执行
create MODE OWNER GROUP 切割后指定创建新的空白文件的属性
nocreate 不建立新的日志文件
rotate N 保留N份,多余删除,不计算新建日志文件
dateext 用当前日期作为后缀命名格式(默认年月日)
dateformat .%s 配合dateext使用,紧跟在下一行出现,定义切割后的文件名,只支持%Y,%m,%d,%s
size/minsize 达到指定大小才会切割,默认单位bytes,还可以是KB和MB
compress 切割结束后,归档并使用gzip格式压缩
nocompress 解除compress参数
delaycompress 总是与compress参数一起使用,指示logrotate不要将最近的归档压缩,压缩将在下一次切割进行。
nodelaycompress 解除delaycompress参数
ifempty 即使日志为空,也执行切割
notifempty 如果日志为空,切割不执行
prerotate/endscript 在所有其他指令之前执行prerotate和endscript之间的命令。
postrotate/endscript 在所有其他指令完成后,postrotate和endscript之间的命令将被执行。
sharescripts 所有日志切割后统一执行一次脚本,如果没有配置该参数,则每个日志切割后都会执行一次脚本。
errors ADDRESS 切割时的错误信息发送到指定的Emial地址
mail ADDRESS 切割日志发送到指定的Email地址
nomail 切割日志不发送邮件
olddir DIRECTORY 切割后的日志文件放入指定目录,必须与当前日志处在同一文件系统
noolddir 切割后的日志文件与当前文件放在同一目录下
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断;先拷贝后清空,可能丢失部分日志
nocopytruncate 备份日志文件,但不截断。
(2).查看上次切割日志时间
/var/lib/logrotate/logrotate.status中默认记录logrotate上次切割日志文件的时间
[root@xuexi logrotate]# cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2019-1-2-11:30:2
"/var/log/cups/page_log" 2018-11-1-10:0:0
"/var/log/cups/error_log" 2018-11-1-10:0:0
"/var/log/boot.log" 2019-4-16-11:37:1
"/var/log/cups/access_log" 2019-4-15-10:18:1
"/var/log/chrony/*.log" 2018-11-1-10:0:0
"/var/log/wtmp" 2018-11-1-10:0:0
"/var/log/spooler" 2019-4-15-10:18:1
"/var/log/btmp" 2019-4-8-15:13:1
"/var/log/iscsiuio.log" 2018-11-1-10:0:0
"/var/log/maillog" 2019-4-15-10:18:1
"/var/log/libvirt/libvirtd.log" 2018-11-1-10:0:0
"/var/log/libvirt/qemu/*.log" 2018-11-1-10:0:0
"/var/log/wpa_supplicant.log" 2018-11-1-10:0:0
"/var/log/secure" 2019-4-15-10:18:1
"/var/log/numad.log" 2018-11-1-10:0:0
"/var/log/ppp/connect-errors" 2018-11-1-10:0:0
"/var/log/messages" 2019-4-15-10:18:1
"/var/account/pacct" 2018-11-1-10:0:0
"/var/log/cron" 2019-4-15-10:18:1
(3).自定义日志切割
首先将sshd服务产生的日志自定义,作为实验目标
[root@xuexi ~]# vim /etc/rsyslog.conf
//在文件末尾添加一行
local0.* /var/log/sshd.log
[root@xuexi ~]# vim /etc/ssh/sshd_config
//将SyslogFacility AUTHPRIV改为
SyslogFacility local0
[root@xuexi ~]# touch /var/log/sshd.log
[root@xuexi ~]# ll /var/log/sshd.log
-rw-r--r--. 1 root root 0 4月 17 13:38 /var/log/sshd.log
[root@xuexi ~]# systemctl restart sshd
[root@xuexi ~]# systemctl restart rsyslog.service
[root@xuexi ~]# ll /var/log/sshd.log
-rw-r--r--. 1 root root 352 4月 17 13:38 /var/log/sshd.log
之后创建切割明细配置文件,并强制执行
[root@xuexi ~]# vim /etc/logrotate.d/sshd
[root@xuexi ~]# cat /etc/logrotate.d/sshd
/var/log/sshd.log{
missingok
weekly
create 0600 root root
dateext
rotate 3
}
[root@xuexi ~]# systemctl restart rsyslog.service
[root@xuexi ~]# logrotate -vf /etc/logrotate.d/sshd
reading config file /etc/logrotate.d/sshd
Allocating hash table for state file, size 15360 B Handling 1 logs rotating pattern: /var/log/sshd.log forced from command line (3 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/sshd.log
log needs rotating
rotating log /var/log/sshd.log, log->rotateCount is 3
dateext suffix '-20190417'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
fscreate context set to unconfined_u:object_r:var_log_t:s0
renaming /var/log/sshd.log to /var/log/sshd.log-20190417
creating new /var/log/sshd.log mode = 0600 uid = 0 gid = 0
set default create context
[root@xuexi ~]# ll /var/log/sshd*
-rw-------. 1 root root 0 4月 17 13:47 /var/log/sshd.log
-rw-r--r--. 1 root root 352 4月 17 13:38 /var/log/sshd.log-20190417
logrotate的-d选项是预演,-f是强制执行,-v是显示详细过程。
(4).扩展
另外还可使用shell和python进行日志切割,这里我找了一个大佬的文章提供参考:运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)
CentOS下的日志切割的更多相关文章
- linux下nohup日志切割方案
1.nohup命令解释: a.语法:nohup [command] [args] [&] b.说明:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂 ...
- Centos7下的日志切割--转发
logrotate /etc/logrotate.conf 是 Logrotate 工具的一个配置文件,这个工具用来自动切割系统日志,Logrotate 是基于 cron 来运行的,如下: [root ...
- Centos系统各种日志存详解
Centos系统各种日志存储路径和详细介绍 Linux常见的日志文件详述如下 1./var/log/boot.log(自检过程) 2./var/log/cron (crontab守护进程crond所派 ...
- Linux Centos下查看cpu、磁盘、内存使用情况,关闭MySQL日志
Linux Centos下查看cpu.磁盘.内存使用情况,关闭MySQL日志 lsblk 查看分区和磁盘df -h 查看空间使用情况fdisk -l 分区工具查看分区信息cfdisk /dev/sda ...
- Linux环境下使用logrotate工具实现nginx日志切割
一. 前提背景及需求 nginx运行日志默认保存在nginx安装目录下的 /usr/local/nginx/logs 文件夹, 包含access.log和error.log两个文件. (1) acce ...
- centos记录uptime,tomcat日志切割,远程拷贝日志脚本
1.uptime日志脚本(每天记录) #!/bin/sh dir=/tmp/uptime_log process=`ps -ef|grep $|grep -v "grep" |gr ...
- CentOS 6.5下部署日志服务器 Rsyslog+LogAnalyzer+MySQL
简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取,所 ...
- apache日志切割
一.日志切割 安装cronolog CentOS 5.4中编译安装Apache默认日志是不切割的,需要用用工具Cronnolog进行日志切割 1.下载及安装 wget http://cronolog. ...
- 日志切割之Logrotate
1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...
随机推荐
- 七牛云 上传图片 https 修改Nginx 注意事项
仅在这记录下,今天的事情. 问题出自于Nginx 设置http 强制跳转 https设置 1.上午,出于某些需求,我将服务器Nginx 设置http 强行跳转 https server { liste ...
- CodeForces - 1042B
Berland shop sells nn kinds of juices. Each juice has its price cici. Each juice includes some set o ...
- 【译】第四篇 Integration Services:增量加载-Updating Rows
本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...
- 洛谷 P4559: bzoj 5319: [JSOI2018]军训列队
题目传送门:洛谷 P4559. 题意简述: 有 \(n\) 个学生,编号为 \(i\) 的学生有一个位置 \(a_i\). 有 \(m\) 个询问,每次询问编号在 \([l,r]\) 区间内的学生跑到 ...
- .net开源框架开源类库(整理)
源:http://www.cnblogs.com/chinanetwind/p/3715809.html 常用库 Json.NET https://github.com/JamesNK/Newtons ...
- Oracle11g用户、权限、角色、概要文件管理及审计
第10章 安全管理 1 用户管理 2 权限管理 3 角色管理 : 4 概要文件管理 5 审计 操作系统:win7 Oracle安装目录:E盘 数据库名字:orcl 密码:123456 先 ...
- 读书笔记 effective c++ Item 48 了解模板元编程
1. TMP是什么? 模板元编程(template metaprogramming TMP)是实现基于模板的C++程序的过程,它能够在编译期执行.你可以想一想:一个模板元程序是用C++实现的并且可以在 ...
- python网络编程--线程GIL(全局解释器锁)
一:什么是GIL 在CPython,全局解释器锁,或GIL,是一个互斥体防止多个本地线程执行同时修改同一个代码.这把锁是必要的主要是因为当前的内存管理不是线程安全的.(然而,由于GIL存在,其他特性已 ...
- js事件兼容处理
js封装事件处理函数,兼容ie,支持事件代理 var eventUtil = { bindEvent: function(el, type, target, callback, popgation) ...
- 虚拟机 ubuntu 16.04
下载地址:https://www.ubuntu.com/download/desktop 使用虚拟机直接安装