ubuntu中的rsyslog

news2024/11/18 21:37:35

目录

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

/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 <syslog.h>

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编辑新的配置文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1417590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 运行vue项目

1&#xff1a;在本地电脑 项目跟目录 执行 npm run build 在根目录生成文件夹 dist 2&#xff1a;复制dist 到linux 上 /usr/vuespace/ledger-web/dist 3: 配置nginx server {listen 443 ssl;server_name tz.i569.cn; #填写绑定证书的域名ssl_certificate /etc/nginx/myconf…

蓝桥杯备战——8.DS1302时钟芯片

1.分析原理图 由上图可以看到&#xff0c;芯片的时钟引脚SCK接到了P17,数据输出输入引脚IO接到P23,复位引脚RST接到P13。 2.查阅DS1302芯片手册 具体细节还需自行翻阅手册&#xff0c;我只截出重点部分 总结&#xff1a;数据在上升沿写出&#xff0c;下降沿读入&#xff0c;…

赚钱的雏形,是跑通最小闭环!

没赚钱本事&#xff0c;就专心打磨武器&#xff01; 很多人有一个错误的认知&#xff0c;就是做项目一定是新的&#xff0c;一定是有创新在里面&#xff0c;但其实赚钱的开始&#xff0c;一定是复制现有的项目。 现有的项目&#xff0c;可以确保他有市场&#xff0c;能够跑通&a…

Ps:段落面板

Ps菜单&#xff1a;窗口/段落 Window/Paragraph Ps菜单&#xff1a;文字/面板/段落面板 Type/Panels/Paragraph Panel 对于“点文本”&#xff0c;默认一行为一个段落。每按一次回车键&#xff0c;就多出一个段落。 对于“段落文本”&#xff0c;一段可能有多行&#xff0c;具体…

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

目 录 项目搭建步骤确定node版本使用Vite创建Vue3项目规范目录结构配置环境修改Vite配置文件集成路由工具Vue Router集成状态管理工具Pinia集成CSS预编译器Sassvite-plugin-svg-icons图标组件集成UI框架Element Plus集成HTTP 请求工具 Axios 项目代码规范集成ESLint配置集成Pre…

动手学深度学习(一)深度学习介绍1

目录 一、引言 1.日常生活中的机器学习&#xff1a; 2.机器学习中的关键组件&#xff1a; 2.1 数据&#xff1a; 2.2 模型&#xff1a; 2.3 目标函数&#xff1a; 2.4 优化算法&#xff1a; 3. 各种机器学习问题&#xff1a; 3.1 监督学习&#xff1a; 3.1.1 回归&…

qemu + vscode图形化调试linux kernel

一、背景 使用命令行连接gdb 在调试时&#xff0c;虽然可以通过tui enable 显示源码&#xff0c;但还是存在设置断点麻烦&#xff08;需要对着源码设置&#xff09;&#xff0c;terminal显示代码不方便&#xff0c;不利于我们学习&#xff1b;另外在gdb 下p命令显示结构体内容…

Vue Router 简介

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介Vue Router 简介主要特性&#xff1a;安装和基本用法&#xff1a; ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏&#xff01;创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的…

CSRF靶场练习

简述&#xff1a;CSRF漏洞实际很少&#xff1b;条件限制很多&#xff1b;局限性很大&#xff1b;实验仅供参考&#xff0c;熟悉csrf概念和攻击原理即可 Pikachu靶场 CSRF GET 登录用户vince的账户可以看到用户的相关信息&#xff1b; 点击修改个人信息&#xff0c;发现数据包…

基于springboot+layui实现的旅游信息管理系统源码+数据库,可以查看旅游路线、飞机火车的班次

travel 介绍 旅游信息管理系统&#xff0c;系统架构&#xff1a;springbootlayui 系统截图 ) 技术选型 技术版本说明Spring Boot2.1.6MVC核心框架Spring Security oauth22.1.5认证和授权框架MyBatis3.5.0ORM框架MyBatisPlus3.1.0基于mybatis&#xff0c;使用lambda表达式的…

TensorFlow2实战-系列教程6:迁移学习实战

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、迁移学习 用已经训练好模型的权重参数当做自己任务的模型权重初始化一般全连接层需…

读AI3.0笔记08_自然语言

1. 人工智能研究的惯用的套路 1.1. 定义一个在细分领域中比较有用的任务 1.2. 收集一个大型数据集来测试机器在该任务上的性能 1.3. 对人类在该数据集上完成任务的能力进行一个有限的度量 1.4. 建立一场竞赛使得人工智能系统可以在该数据集上互相竞争 1.5. 直到最终达到或…

内存储器之只读存储器(ROM),随机存取存储器(RAM)和Cache详解

内存储器 计算机中的存储器分为内存和外存两大类。 内存的存取速度快而容量相对较小&#xff0c;它与CPU直接相连&#xff0c;用来存放等待CPU运行的程序和处理的数据&#xff1b;外存的速度较慢而容量相对很大&#xff0c;它与CPU并不直接连接&#xff0c;用于永久性地存放计…

网络安全04-sql注入靶场第一关

目录 一、环境准备 1.1我们进入第一关也如图&#xff1a; ​编辑 二、正式开始第一关讲述 2.1很明显它让我们在标签上输入一个ID&#xff0c;那我们就输入在链接后面加?id1 ​编辑 2.2链接后面加个单引号()查看返回的内容&#xff0c;127.0.0.1/sqli/less-1/?id1,id1 …

Unity 迭代器模式(实例详解)

文章目录 简介**实例1&#xff1a;遍历数组****实例2&#xff1a;自定义迭代器类****实例3&#xff1a;异步加载资源****实例4&#xff1a;游戏关卡序列****实例5&#xff1a;无限生成敌人** 简介 在Unity中&#xff0c;虽然不直接使用迭代器模式的原始定义&#xff08;即设计…

PDF标准详解(一)——PDF文档结构

已经很久没有写博客记录自己学到的一些东西了。但是在过去一年的时间中自己确实又学到了一些东西。一直攒着没有系统化成一篇篇的文章&#xff0c;所以今年的博客打算也是以去年学到的一系列内容为主。通过之前Vim系列教程的启发&#xff0c;我发现还是写一些系列文章对自己的帮…

Springmvc-@RequestBody

SpringBoot-2.7.12 请求的body参数无法转换&#xff0c;服务端没有报错信息打印&#xff0c;而是响应的状态码是400 PostMapping("/static/user") public User userInfo(RequestBody(required false) User user){user.setAge(19);return user; }PostMapping("…

05 Redis之Benchmark+简单动态字符串SDS+集合的底层实现

3.8 Benchmark Redis安装完毕后会自动安装一个redis-benchmark测试工具&#xff0c;其是一个压力测试工具&#xff0c;用于测试 Redis 的性能。 src目录下可找到该工具 通过 redis-benchmark –help 命令可以查看到其用法 3.8.1 测试1 3.9 简单动态字符串SDS 无论是 Redis …

【面试】测试开发面试题

帝王之气&#xff0c;定是你和万里江山&#xff0c;我都护得周全 文章目录 前言1. 网络原理get与post的区别TCP/IP各层是如何传输数据的IP头部包含哪些内容TCP头部为什么有浮动网络层协议1. 路由协议2. 路由信息3. OSPF与RIP的区别Cookie与Session&#xff0c;Token的区别http与…

Redis学习——高级篇①

Redis学习——高级篇① Redis7高级之单线程和多线程&#xff08;一&#xff09; 一、Redis单线程VS多线程1.Redis的单线程部分1.1 Redis为什么是单线程&#xff1f;1.2 Redis所谓的“单线程”1.3 Redis演进变化1.3.1 Redis 3.x 单线程时代性能很快的原因1.3.2…