linux日志怎么进行转储,Linux logrotate命令用法详解:进行日志转储(轮替)

日志轮替之所以可以在指定的时间备份日志,是因为其依赖系统定时任务。如果大家还记得 /etc/cron.daily/ 目录,就会发现这个目录中是有 logrotate 文件的,查看一下这个文件,命令如下:

[root@localhost ~]# vi /etc/cron.daily/logrotate

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1

#最主要的就是执行了logrotate命令

EXITVALUE=$?

if [ $EXITVALUE!= 0 ]; then

/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"

fi

exit 0

也就是说,系统每天都会执行 /etc/cron.daily/logrotate 文件,运行这个文件中的“/usr/sbin/logrotate/etc/logrotate.conf>/dev/null 2>&1”命令。logrotate 命令会依据 /etc/logrotate.conf 配置文件的配置,来判断配置文件中的日志是否符合日志轮替的条件(比如,日志备份时间已经满一周),如果符合,日志就会进行轮替。所以说,日志轮替还是由 crond 服务发起的。

logrotate 命令的格式是什么样的呢?我们来学习一下。

[root@localhost ~]# logrotate [选项] 配置文件名

选项:

如果此命令没有选项,则会按照配置文件中的条件进行日志轮替

-v:显示日志轮替过程。加入了-v选项,会显示日志的轮替过程

-f: 强制进行日志轮替。不管日志轮替的条件是否符合,强制配置文件中所有的日志进行轮替

我们执行 logrotate 命令,并查看一下执行过程。

[root@localhost ~]# logrotate -v /etc/logrotate.conf

#查看日志轮替的流程

…省略部分输出…

rotating pattern:/var/log/alert.log weekly (6 rotations)

#这就是我们自己加入轮替的alert.log日志

empty log files are rotated, old logs are removed

considering log /var/log/alert.log

log does not need rotating

#时间不够一周,所以不进行日志轮替

…省略部分输出…

我们发现,/var/log/alert.log 加入了日志轮替,已经被 logrotate 识别并调用了,只是时间没有达到轮替的标准,所以没有进行轮替。那我们强制进行一次日志轮替,看看会有什么结果。

[root@localhost ~]# logrotate -vf /etc/logrotate.conf

#强制进行日志轮替,不管是否符合轮替条件

…省略部分输出…

rotating pattern:/var/log/alert.log forced from command line (6 rotations)

empty log files are rotated, old logs are removed

considering log /var/log/alert.log

log needs rotating

#日志需要轮替

rotating log /var/log/alert.log,log->rotateCount is 6

dateext suffix '-20130607'

#提取日期参数

glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

glob finding old rotated logs failed

running prerotate script

fscreate context set to unconfined_u:object_r:var_log_t:s0

renaming /var/log/alert.log to /var/log/alert.log-20130607

#旧的日志被重命名

creating new /var/log/alert.log mode = 0600 uid = 0 gid = 0

#创建新日志文件,同时指定权限、所有者和属组

running postrotate script

…省略部分输出…

我们发现,alert.log 日志已经完成了日志轮替。查看一下新生成的日志和旧日志,如下:

[root@localhost ~]# ll /var/log/alert.log*

-rw-------.1 root root 0 6月 7 10:07 /var/log/alert.log

-rw-------.1 root root 237 6月 7 09:58 /var/log/alert.log-20130607

#旧的日志文件已经轮替

[root@localhost ~]# lsattr /var/log/alert.log

-----a-------e- /var/log/alert.log

#新的日志文件被自动加入了chattr的a属性

logrotate 命令在使用“-f”选项之后,就会不管日志是否符合轮替条件,而强制把所有的日志都进行轮替。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值