ubuntu中的rsyslog

目录

1. rsyslog简介

2. 查看/var/log

3. syslog的配置文件

3.1 /etc/rsyslog.d/50-default.conf

3.2 /etc/rsyslog.conf

4. 如何写入syslog

4.1 C语言

4.2 shell

4.3 内核输出

5. syslog.1和syslog.2.gz等文件是如何生成

6. logrotate是如何被执行

7. 如何限制syslog的大小为500M以内

8. 与syslog有关的三个程序


 

  • 1. rsyslog简介

Rsyslog 是一个 syslogd 的多线程增强版,依然基于Syslog协议(linux6之前默认使用syslog程序,centos6用rsyslog所取代)完成系统日志的处理转发,官方形容它是一个极速(如火箭般快速)的日志处理系统。

2. 查看/var/log

user@localhost:/var/log$ ll

total 2696

drwxrwxr-x 7 root syslog 4096 Jan 25 01:51 ./

drwxr-xr-x 14 root root 4096 Jul 28 2021 ../

drwxr-xr-x 2 root root 4096 Sep 12 06:26 apt/

-rw-r----- 1 syslog adm 60238 Jan 25 02:01 auth.log

-rw-r----- 1 syslog adm 45916 Jan 21 06:25 auth.log.1

-rw-r----- 1 syslog adm 3446 Jan 14 06:25 auth.log.2.gz

-rw-r----- 1 syslog adm 2278 Jan 8 06:25 auth.log.3.gz

-rw-r----- 1 syslog adm 1914 Jan 3 06:25 auth.log.4.gz

-rw-rw---- 1 root utmp 3200 Jan 25 01:52 btmp #记录错误登录的日志,二进制文件,使用lastb命令查看

-rw-rw---- 1 root utmp 0 Dec 1 06:25 btmp.1

drwxr-xr-x 2 _chrony _chrony 4096 Aug 25 2020 chrony/

-rw-r--r-- 1 root root 0 Dec 8 06:25 dpkg.log

-rw-r--r-- 1 root root 798 Dec 6 06:36 dpkg.log.1

-rw-r--r-- 1 root root 803 Nov 21 08:21 dpkg.log.2.gz

-rw-r--r-- 1 root root 997 Sep 11 09:05 dpkg.log.3.gz

-rw-r----- 1 syslog adm 699919 Jan 24 22:17 kern.log

-rw-r----- 1 syslog adm 40633 Jan 21 05:23 kern.log.1

-rw-r----- 1 syslog adm 56333 Jan 12 05:52 kern.log.2.gz

-rw-r----- 1 syslog adm 40471 Jan 8 01:46 kern.log.3.gz

-rw-r----- 1 syslog adm 86712 Jan 3 06:11 kern.log.4.gz

-rw-rw-r-- 1 root utmp 296296 Jan 25 01:56 lastlog #记录系统中所有用户最后一次登录时间的日志,二进制文件,使用lastlog命令查看

-rw-r----- 1 syslog adm 1190210 Jan 25 01:56 syslog

-rw-r----- 1 syslog adm 237999 Jan 24 06:25 syslog.1

-rw-r----- 1 syslog adm 3059 Jan 23 06:25 syslog.2.gz

-rw-r----- 1 syslog adm 16078 Jan 22 06:25 syslog.3.gz

-rw-r----- 1 syslog adm 15477 Jan 21 06:25 syslog.4.gz

-rw-r----- 1 syslog adm 1334 Jan 20 06:25 syslog.5.gz

-rw-r----- 1 syslog adm 1298 Jan 19 06:25 syslog.6.gz

-rw-r----- 1 syslog adm 3723 Jan 18 06:25 syslog.7.gz

-rw-r--r-- 1 root root 2604 Jan 10 01:20 ubuntu-advantage-timer.log

-rw-r--r-- 1 root root 550 Dec 8 06:19 ubuntu-advantage-timer.log.1

-rw-r--r-- 1 root root 1388 Dec 1 03:34 ubuntu-advantage-timer.log.2.gz

-rw-r--r-- 1 root root 496 Nov 1 05:12 ubuntu-advantage-timer.log.3.gz

-rw-r--r-- 1 root root 913 Oct 9 04:50 ubuntu-advantage-timer.log.4.gz

drwxr-xr-x 2 root root 4096 Dec 8 06:25 unattended-upgrades/

-rw-rw-r-- 1 root utmp 80000 Jan 25 01:56 wtmp #永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机时间。二进制文件,使用last命令查看。

-rw-rw-r-- 1 root utmp 42400 Jan 3 05:56 wtmp.1

所有owner为syslog的文件,均为与rsyslogd进程有关的文件。

3. syslog的配置文件

syslog的配置文件有:

/etc/rsyslog.d/50-default.conf

/etc/rsyslog.conf

3.1 /etc/rsyslog.d/50-default.conf

这个文件标明了syslog的每个文件是怎么生成的。文件内容为:

#  Default rules for rsyslog.
#
#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log  # 将所有auth和authpriv设施(通常与安全和认证相关的日志)的所有优先级(`*` 表示所有优先级)的消息写入 `/var/log/auth.log` 文件。用sudo执行的命令会显示在这个文件中。
*.*;auth,authpriv.none          -/var/log/syslog   #将除了auth和authpriv的所有优先级的消息都写入/var/log/syslog。符号-表示使用异步写入,提高性能但在系统崩溃时可能会丢失数据。
#cron.*                         /var/log/cron.log  #注释了,所以不写入cron消息
#daemon.*                       -/var/log/daemon.log
kern.*                          -/var/log/kern.log  #将内核(`kern` 设施)的所有消息异步写入 `/var/log/kern.log` 文件。
#lpr.*                          -/var/log/lpr.log
mail.*                          -/var/log/mail.log  #将邮件系统(`mail` 设施)的所有消息异步写入 `/var/log/mail.log` 文件。
#user.*                         -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info                      -/var/log/mail.info
#mail.warn                      -/var/log/mail.warn
mail.err                        /var/log/mail.err  #将邮件系统的错误消息(`mail.err`)写入/var/log/mail.err文件。

#
# Some "catch-all" log files.
#
#*.=debug;\
#       auth,authpriv.none;\
#       news.none;mail.none     -/var/log/debug
#*.=info;*.=notice;*.=warn;\
#       auth,authpriv.none;\
#       cron,daemon.none;\
#       mail,news.none          -/var/log/messages  #注释了,所以没有/var/log/messages文件生成。

#
# Emergencies are sent to everybody logged in.
#
*.emerg                         :omusrmsg:*  #将所有设施的紧急消息(`emerg` 优先级)发送给所有当前登录的用户。

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#       news.=crit;news.=err;news.=notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       /dev/tty8

注:

下面是一些常见的设施和级别的例子:

- facility:`auth`, `cron`, `daemon`, `kern`, `mail`, `syslog`, `user`, `local0` 到 `local7`(用于本地使用)等。

- 级别:`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`, `debug`。

facility 定义了消息类型如下:

# auth 用户认证

# authpriv 有特权的用户认证

# cron cron守护进程

# daemon 各种系统守护进程

# ftp ftp守护进程

# kern 内核消息

# local0-local7 保留用于本地用法

# lpr 打印机

# mail 邮件

# news 新闻

# syslog 内部syslog

# uucp uucp系统

# user 各种用户程序来的消息

3.2 /etc/rsyslog.conf

这个文件用来保存syslog时的配置参数。文件内容为:

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging  #加载了imuxsock模块,它允许rsyslog接收通过 Unix 域套接字发送的本地系统日志消息。
#module(load="immark")  # provides --MARK-- message capability  #这行注释掉了。如果不注释,表示加载immark模块

# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")

# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")  #加载imklog模块,它允许rsyslog处理来自内核的日志消息。permitnonkernelfacility设置为 "on" 表示也允许记录非内核设施的消息。

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat  # 使用传统的时间戳格式。

# Filter duplicated messages
$RepeatedMsgReduction on   #过滤重复功能。这个功能启用后,可以减少重复消息的记录。如果同一消息多次被记录,它会被合并。

#
# Set the default permissions for all log files.  #下面这部分是设置权限
# 
$FileOwner syslog  #使用的owner和group
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog  #这行及后面这一行表示rsyslog在启动后出于安全考虑降低权限,切换到syslog用户和组。
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog  #临时文件和状态文件的位置为/var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

  • 4. 如何写入syslog

ubuntu中的rsyslog_第1张图片

/dev/log文件是一个软链接:

user@localhost:/dev$ ll|grep log

lrwxrwxrwx 1 root root 28 Mar 2 2023 log -> /run/systemd/journal/dev-log=

用户空间只需要调用syslog()函数,即可保存log。

syslogd创建一个unitx套接字,给它捆绑在/dev/log中,监控该文件的输入。

4.1 C语言

#include 

int main() {

    // 打开日志连接,指定日志程序标识和选项

    openlog("myapp", LOG_PID|LOG_CONS, LOG_USER);


    // 写入日志消息,指定优先级级别

    syslog(LOG_INFO | LOG_USER, "用户级别的信息性消息");

    syslog(LOG_ERR | LOG_AUTH, "认证系统的错误消息");


    // 关闭日志连接

    closelog();

    return 0;

}

在这个例子中,syslog函数的第一个参数是一个位掩码,它结合了优先级级别(例如 `LOG_INFO`, `LOG_ERR`)和设施代码(例如 `LOG_USER`, `LOG_AUTH`)。这些代码定义在 `` 头文件中。

- `LOG_USER` 是一个通用的消息设施,用于用户级别的消息。

- `LOG_AUTH` 是一个专门用于安全/授权消息(例如登录事件、sudo 命令)的设施。

4.2 shell

logger -p auth.info -t myapp "this is a auto info test message"

logger -s "this is my message"

在/var/log/syslog可以看到新增的一行:

Jan 15 15:25:44 localhost user: this is my message

也可以使用-p来指定设置facility和优先级,默认是user.notice,根据50-default.conf中的这个配置*.*;auth,authpriv.none -/var/log/syslog,这条消息会写入/var/log/syslog中。

logger -p auth.info "this is a auto info test message 2"

由于使用了 -p auth.info(其中auth是设施代码,代表认证系统,而 info是消息的级别),所以这条消息被写入auth.log中。

在auth.log中显示:

Jan 15 15:34:48 localhost user: this is a auto info test message 2

4.3 内核输出

内核的打印是在/proc/kmsg文件中(dmesg命令也是读取的这个文件)。

rsyslogd通过 imklog 模块来读取内核日志缓冲区。这个模块允许 rsyslogd直接访问/proc/kmsg文件,并将其中的消息转发到 rsyslogd的处理机制中,最终根据配置将消息写入到/var/log/syslog或其他日志文件中。

  • 5. syslog.1和syslog.2.gz等文件是如何生成

在/var/log目录中,可以看到,除了syslog文件,还有syslog.1, syslog.2.gz等文件,这些文件是如何生成的呢?

这些文件是由日志轮转工具/usr/sbin/logrotate生成的。

它的配置文件为:/etc/logrotate.conf和/etc/logrotate.d下的众多文件。

注意,logrotate并不仅仅可以轮转syslog日志,它是一个通用工具。/etc/logrotate.d目录下的文件有:

user@localhost:/etc/logrotate.d$ ll

-rw-r--r-- 1 root root 120 Nov 2 2017 alternatives

-rw-r--r-- 1 root root 173 Apr 20 2018 apt

-rw-r--r-- 1 root root 160 Aug 25 2020 chrony

-rw-r--r-- 1 root root 112 Nov 2 2017 dpkg

-rw-r--r-- 1 root root 94 Feb 26 2018 ppp

-rw-r--r-- 1 root root 501 Jan 14 2018 rsyslog

-rw-r--r-- 1 root root 270 Apr 5 2023 ubuntu-advantage-tools

-rw-r--r-- 1 root root 235 Feb 17 2020 unattended-upgrades

/etc/logrotate.conf文件的内容为:

# see "man logrotate" for details
# rotate log files weekly
weekly  #设置日志文件每周轮换一次

# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog  #在执行日志轮换时使用 root 用户和 syslog 组

# keep 4 weeks worth of backlogs
rotate 4  #保留 4 周的日志备份。

# create new (empty) log files after rotating old ones
create  #在旧日志文件轮换后创建新的空日志文件。

# uncomment this if you want your log files compressed
#compress   #这里注释了,所以默认不压缩

# packages drop log rotation information into this directory
include /etc/logrotate.d  #包含/etc/logrotate.d目录

# no packages own wtmp, or btmp -- we'll rotate them here  #此部分为/var/log/wtmp文件配置日志轮换。没有/etc/logrotate.d/wtmp文件,所以直接放在本文件了
/var/log/wtmp {
    missingok  #如果文件不存在,不报错,继续下一个任务
    monthly  #每月轮换一次
    create 0664 root utmp  #创建新文件,权限为 0664,所有者为 root,组为 utmp
    rotate 1   #保留 1 个旧日志文件。所以会有wtmp.1,而不会有wtmp.2
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}

# system-specific logs may be configured here

/etc/logrotate.d/rsyslog文件的内容为:

/var/log/syslog
{
        rotate 7  #保留 7 个轮转的日志文件副本,最多会有syslog.1 ~ syslog.7文件
        daily  #每日轮转
        missingok
        notifempty  #如果日志文件为空,不进行轮转。
        delaycompress #延迟压缩,即在下一次轮转时压缩上一次轮转的日志文件。所以syslog和syslog.1不压缩,syslog.2~syslog.7压缩,变为syslog.2.gz, ......, syslog.7.gz
        compress  #压缩轮转的日志文件
        postrotate  #轮转后要运行的命令的开始
                /usr/lib/rsyslog/rsyslog-rotate  #轮转后执行的具体命令
        endscript  #标记postrotate命令块的结束
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts  #如果有多个日志文件,只运行一次postrotate脚本,而不是每个文件都运行。
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

由此可见,除了syslog文件每天轮转,一共保留7个旧文件(算今天的syslog,相当于保留8天的内容咯),其它都是每周轮转,保留4个旧文件。

/usr/lib/rsyslog/rsyslog-rotate的内容是

#!/bin/sh

if [ -d /run/systemd/system ]; then  #表示用systemd来初始化系统
    systemctl kill -s HUP rsyslog.service  #通过systemctl kill命令发送HUP信号给rsyslog.service。这个HUP信号会让rsyslog重新加载其配置文件和轮转日志,而不是完全重启服务。
else
    invoke-rc.d rsyslog rotate > /dev/null
fi

注:如果修改/etc/logrotate.d/rsyslog,对syslog增加size 500M的限制,比如:

/var/log/syslog

{

size 500M

rotate 7

daily

missingok

notifempty

delaycompress

compress

postrotate

/usr/lib/rsyslog/rsyslog-rotate

endscript

}

这表示:每天都会检查尝试轮转,如果文件大于500M才轮转,否则不轮转。

  • 6. logrotate是如何被执行

/usr/sbin/logrotate工具并不是一直执行的。它是由定时计划任务cron.service的cron进程触发了才执行的。

cron的配置文件有:

user@localhost:/etc$ ll|grep cron

drwxr-xr-x 2 root root 4096 Jul 10 2023 cron.d/

drwxr-xr-x 2 root root 4096 Jul 10 2023 cron.daily/

drwxr-xr-x 2 root root 4096 Nov 21 08:20 cron.hourly/

drwxr-xr-x 2 root root 4096 Jul 10 2023 cron.monthly/

drwxr-xr-x 2 root root 4096 Jul 10 2023 cron.weekly/

-rw-r--r-- 1 root root 722 Nov 16 2017 crontab

cron是定时计划任务,可以在各个目录中定义自己的脚本,在时间到来时,cron就会自动执行这些脚本。比如cron.daily目录下有:

user@localhost:/etc/cron.daily$ ll

-rw-r--r-- 1 root root 102 Nov 16 2017 .placeholder

-rwxr-xr-x 1 root root 1478 Apr 20 2018 apt-compat*

-rwxr-xr-x 1 root root 1176 Nov 2 2017 dpkg*

-rwxr-xr-x 1 root root 2211 Apr 13 2014 locate*

-rwxr-xr-x 1 root root 372 Aug 21 2017 logrotate*

-rwxr-xr-x 1 root root 249 Jan 25 2018 passwd*

logrotate就是其中的一个文件。其内容为:

#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf  #这里调用了logrotate程序

那么,cron是如何实现每天调用cron.daily里的脚本呢?

可以看到同目录下的crontab文件。这个文件是cron程序的配置文件的入口。/etc/crontab的文件内容为:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

其中,第11行表示每小时的第 17 分钟,以 `root` 用户身份执行。`cd /` 是切换到根目录,`run-parts --report /etc/cron.hourly` 是运行`/etc/cron.hourly` 目录下的所有脚本,`--report` 选项会报告哪些作业被执行了。

第12行表示每天早上 6:25,以 `root` 用户身份执行。首先检查 `anacron` 是否存在并可执行,如果不存在或不可执行,则执行括号中的命令,运行 `/etc/cron.daily` 目录下的所有脚本。这就是为什么我们前面看到syslog.1和syslog.2.gz文件的生成时间都是06:25 。

第13行表示每周星期天(7)早上 6:47,以 `root` 用户身份执行。同样,先检查 `anacron`,然后可能运行 `/etc/cron.weekly` 目录下的脚本。

第14行表示 每月第一天早上 6:52,以 `root` 用户身份执行。检查 `anacron`,然后可能运行 `/etc/cron.monthly` 目录下的脚本。

要注意的是,logrotate只是在/etc/cron.daily中调用,而没有在cron.weekly中定义。在我们前面的rsylog的配置中,除了syslog的日志是每天轮转之外,其它的比如kern.log日志是每周轮转的呢?

`logrotate` 的配置确实是通过 `cron.daily` 来调用的,这意味着 `logrotate` 每天都会运行一次。尽管如此,`logrotate` 仍然能够处理 `weekly`、`monthly` 甚至 `yearly` 的轮转周期,因为它会跟踪上次轮转每个日志文件的时间。当 `logrotate` 运行时,它会查看每个日志文件的状态信息,这些信息通常存储在 `/var/lib/logrotate/status` 或 `/var/lib/logrotate/logrotate.status` 文件中。这个状态文件记录了每个日志文件最后一次轮转的时间。`logrotate` 使用这些信息来确定是否到了轮转每个日志文件的时间。

这是 `logrotate` 能够处理不同轮转周期的关键。即使它每天都运行,它也会检查每个文件的配置和上次轮转的时间,以决定是否执行轮转。如果配置为 `weekly`,并且上次轮转是一周前,那么 `logrotate` 将进行轮转。同样,如果配置为 `monthly` 并且上次轮转是一个月前,那么它也会进行轮转。

因此,`logrotate` 不需要在 `cron.weekly` 或 `cron.monthly` 目录中有单独的条目,因为其自身的检查机制足以确保在正确的时间执行轮转。这种设计使得管理和维护 `logrotate` 变得更加简单,因为您只需要保证它每天至少运行一次,而不需要为不同的轮转周期设置多个 `cron` 任务。

  • 7. 如何限制syslog的大小为500M以内

有时候比如kernel有问题,疯狂打印。造成kern.log和syslog文件都很快就把磁盘占满了,系统没有办法正常工作。

这时候我们想限制syslog大小为500M以内,怎么办呢?

方法一:由rsyslogd进程自己来限制syslog和kern.log的大小

(1) . 修改/etc/rsyslog.d/50-default.conf文件

文件中添加:

$outchannel log_syslog,/var/log/syslog,524288000,/home/me/rsyslog/logrotate_syslog.sh $outchannel log_kern,/var/log/kern.log,524288000,/home/me/rsyslog/logrotate_ kernlog.sh

*.*;auth,authpriv.none -/var/log/syslog

kern.* -/var/log/kern.log

修改为

*.*;auth,authpriv.none :omfile:$log_syslog

kern.* :omfile:$log_kern

(2). 在/home/me/中增加rsyslog目录,增加脚本logrotate_syslog.sh和logrotate_kernlog.sh

mkdir rsyslog

cd rsyslog

sudo touch logrotate_syslog.sh logrotate_kernlog.sh

sudo chown syslog:adm logrotate_syslog.sh logrotate_kernlog.sh

sudo chmod 755 logrotate_syslog.sh logrotate_kernlog.sh

logrotate_syslog.sh文件内容为:

#!/bin/bash mv /var/log/syslog /var/log/syslog.33 truncate -s 0 /var/log/syslog chown syslog:adm /var/log/syslog

logrotate_kernlog.sh文件的内容为:

#!/bin/bash mv /var/log/kern.log /var/log/kern.log.33 truncate -s 0 /var/log/kern.log chown syslog:adm /var/log/kern.log

方法二:每小时进行日志轮转

把syslog的日志轮转从/etc/cron.daily/移到/etc/cron.hourly/,使得它变为每小时进行日志轮转。

/etc/cron.daily/logrotate中有这一行:

/usr/sbin/logrotate /etc/logrotate.conf

把它移动到/etc/cron. hourly/logrotate文件中。但是其实这影响了包括rsyslog在内的所有的日志的轮转。

当然有可能每小时进行日志轮转还是不够。需要进行每分钟日志轮转。

方法三:每分钟进行日志轮转

(1). 在/etc/logrotate.d/目录下创建一个名为 mylogs的配置文件:

/var/log/syslog

/var/log/kern.log

{

size 500M

rotate 5

missingok

notifempty

compress

delaycompress

postrotate

invoke-rc.d rsyslog rotate > /dev/null

endscript

}

(2). 执行sudo crontab -e

在出现的编辑界面中添加一行* * * * * /usr/sbin/logrotate /etc/logrotate.d/mylogs

这一行内容会放在/var/spool/cron/crontabs/root文件中。

  • 8. 与syslog有关的三个程序

程序名称

service

作用

配置文件

输出文件

rsyslogd

rsyslog.service

写入/var/log目录下的部分文件(具体见右侧)

/etc/rsyslog.d/50-default.conf、

/etc/rsyslog.conf、

etc/syslog.conf应该是多余的,是旧的syslog.service的配置。

/var/log目录下的

auth.log

syslog

cron.log

kern.log

logrotate

默认不启动。

由cron周期调用。

比如syslog的日志轮转是在/etc/cron.daily/里执行,表明syslog的日志轮转的最小周期是1天。

日志轮转备份。

包括rsyslog、apache2、apt等服务或者进程等产生的日志。

/etc/logrotate.conf、

/etc/logrotate.d/rsyslog

/etc/logrotate.d/apt等

/var/log/目录下的

syslog.1

syslog.2.gz

apt/term.log

cron

cron.service

执行定时计划任务,包括logrotate,也可以自己添加

/etc/crontab

/etc/cron.d/

/etc/cron.daily/

/etc/cron.hourly/

/etc/cron.monthly/

/etc/cron.weekly/

这些文件中,默认最小的时间间隔是hourly。

如果需要minutely,需要使用crontab -e编辑新的配置文件。

你可能感兴趣的:(ubuntu,linux,服务器)