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

/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

在shell中,可以使用logger命令来写入日志。

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,组为 utmprotate 1   #保留 1 个旧日志文件。所以会有wtmp.1,而不会有wtmp.2
}/var/log/btmp {missingokmonthlycreate 0660 root utmprotate 1
}# system-specific logs may be configured here

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

/var/log/syslog
{rotate 7  #保留 7 个轮转的日志文件副本,最多会有syslog.1 ~ syslog.7文件daily  #每日轮转missingoknotifempty  #如果日志文件为空,不进行轮转。delaycompress #延迟压缩,即在下一次轮转时压缩上一次轮转的日志文件。所以syslog和syslog.1不压缩,syslog.2~syslog.7压缩,变为syslog.2.gz, ......, syslog.7.gzcompress  #压缩轮转的日志文件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 4weeklymissingoknotifemptycompressdelaycompresssharedscripts  #如果有多个日志文件,只运行一次postrotate脚本,而不是每个文件都运行。postrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}

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

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

#!/bin/shif [ -d /run/systemd/system ]; then  #表示用systemd来初始化系统systemctl kill -s HUP rsyslog.service  #通过systemctl kill命令发送HUP信号给rsyslog.service。这个HUP信号会让rsyslog重新加载其配置文件和轮转日志,而不是完全重启服务。
elseinvoke-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 statustest -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.mzph.cn/news/654011.shtml

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

相关文章

【网络】WireShark过滤 | WireShark实现TCP三次握手和四次挥手

目录 一、开启WireShark的大门 1.1 WireShark简介 1.2 常用的Wireshark过滤方式 二、如何抓包搜索关键字 2.1 协议过滤 2.2 IP过滤 ​编辑 2.3 过滤端口 2.4 过滤MAC地址 2.5 过滤包长度 2.6 HTTP模式过滤 三、ARP协议分析 四、WireShark之ICMP协议 五、TCP三次握…

Jmeter学习系列之一:Jmeter的详细介绍

目录 一、Jmeter的介绍 二、Jemeter的特点 三、Jemter相关概念 3.1采样器&#xff08;Samplers&#xff09; 3.2逻辑控制器&#xff08;Logic Controllers&#xff09; 3.3监听器&#xff08;Listeners&#xff09; 3.4配置元件&#xff08;Configuration Elements&#…

Mac安装配置maven

Mac安装配置maven 官网下载地址&#xff1a;https://maven.apache.org/download.cgi 下载好以后解压配置 maven 环境变量 打开终端&#xff0c;输入命令打开配置文件./bash_profile open ~/.bash_profile输入i进入编辑模式,进行maven配置; MAVEN_HOME为maven的本地路径 ex…

Phoncent博客GPT写作工具

对于许多人来说&#xff0c;写作并不是一件轻松的事情。有时候&#xff0c;我们可能会遇到写作灵感枯竭、写作思路混乱、语言表达困难等问题。为了解决这些问题&#xff0c;Phoncent博客推出了一款创新的工具——GPT写作工具&#xff0c;它利用了GPT技术&#xff0c;为用户提供…

Springboot入门教程详解

Springboot入门教程详解 博客主页&#xff1a;划水的阿瞒的博客主页 欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ 系列专栏&#xff1a;Springboot入门教程详解首发时间&#xff1a;&#x1f39e;2024年1月29日&#x1f3a0; 如果觉得博主的文章还不错的话&#xff0c…

vue+axios+promise实际开发用法

vueaxiospromise实际开发用法 vuex 核心 & 数据响应式原理 vuex 使用总结&#xff08;详解&#xff09; vue的双向绑定原理及实现 一、axios的介绍 axios 是由 promise 封装的一个 http 的库。 promise是 es6 为解决异步编程的。 什么是异步&#xff1f; 1. 不会按…

【大数据】Flink 架构(六):保存点 Savepoint

《Flink 架构》系列&#xff08;已完结&#xff09;&#xff0c;共包含以下 6 篇文章&#xff1a; Flink 架构&#xff08;一&#xff09;&#xff1a;系统架构Flink 架构&#xff08;二&#xff09;&#xff1a;数据传输Flink 架构&#xff08;三&#xff09;&#xff1a;事件…

你这人能不能灵活点?前端代码简单优化一下?

公众号&#xff1a;程序员白特&#xff0c;可jia前端qun 背景 贴近目前公司的业务&#xff0c;做的增删改查比较多。基本上都是做一些表格的业务系统比较多&#xff0c;因此在写的过程中&#xff0c;都会遇到一些优化的细点&#xff0c;仅供参考&#xff0c;觉得好的可以采纳&a…

FairGuard游戏加固入选《CCSIP 2023中国网络安全行业全景册(第六版)》

2024年1月24日&#xff0c; FreeBuf咨询正式发布《CCSIP 2023中国网络安全行业全景册(第六版)》。本次发布的全景图&#xff0c;共计展示20个一级分类、108个细分安全领域&#xff0c;旨在为广大企业提供网络安全产品选型参考&#xff0c;帮助企业了解中国网络安全技术与市场的…

C++11——新的类功能与可变参数模板

系列文章目录 文章目录 系列文章目录一、新的类功能默认成员函数类成员变量初始化强制生成默认函数的关键字default禁止生成默认函数的关键字delete继承和多态中的final与override关键字 二、可变参数模板递归函数方式展开参数包逗号表达式展开参数包STL容器中的empalce_back与…

100天精通鸿蒙从入门到跳槽——第20天:ArkTS装饰器@Link双向数据绑定

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》 — Go语言学习之旅!《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师!100天…

免费分享一套微信小程序外卖跑腿点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现) &#xff0c;分享下哈。 项目视频演示 【免费】微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现)…

【开源】基于JAVA语言的毕业生追踪系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 学生基本配置模块2.3 就业状况模块2.4 学历深造模块2.5 信息汇总分析模块2.6 校友论坛模块 三、系统设计3.1 用例设计3.2 实体设计 四、系统展示五、核心代码5.1 查询我的就业状况5.2 初始化就业状况5.…

SSL加密证书免费申请

首先&#xff0c;让我们来了解一下SSL证书的基本作用。SSL证书通过公钥和私钥的非对称加密技术&#xff0c;使得服务器与浏览器之间的通信内容得到高强度加密&#xff0c;同时验证网站的真实身份&#xff0c;从而提升用户的信任度&#xff0c;也是搜索引擎排名优化的一个重要因…

Idea设置代理后无法clone git项目

背景 对于我们程序员来说&#xff0c;经常上github找项目、找资料是必不可少的&#xff0c;但是一些原因&#xff0c;我们访问的时候速度特别的慢&#xff0c;需要有个代理&#xff0c;才能正常的访问。 今天碰到个问题&#xff0c;使用idea工具 clone项目&#xff0c;速度特…

2.【Vue3】Vue 基本使用——局部使用Vue

文章目录 1. 快速入门2. 常用指令2.1 v-for2.2 v-bind2.3 v-if 与 v-show2.4 v-on2.5 v-model 3. 生命周期4. Ajax 函数库 Axios4.1 Axios 基本使用4.2 Axios 请求方式别名 1. 快速入门 现在需要将 “hello vue3” 这样一个字符串渲染到页面上进行展示。 这个需求并不陌生&…

Vue-Cli3 - 从安装 nodejs 配置环境 ~ 搭建 cli 脚手架项目全过程

目录 前言提示 一、安装 & 配置 nodejs 1.1、安装 nodejs 1.2、配置必要目录 1.3、配置环境变量 1.4、测试 安装&配置 是否成功 1.5、安装淘宝镜像 1.5、cnpm 安装&#xff08;推荐安装&#xff09; 二、vue-cli3 创建项目 2.1、vue-cli2 和 vue-cli3 主要区…

C语言——N / 自定义类型:联合和枚举

目录 一、联合体 1、联合体类型的声明 2、联合体的特点 3、相同成员的结构体和联合体对比 4、联合体大小的计算 5、联合的一个练习 二、枚举类型 1、枚举类型的声明 2、枚举类型的优点 3、枚举类型的使用 一、联合体 1、联合体类型的声明 像结构体⼀样&#xff0c;…

批量导出域控用户及其所在OU和组

在Windows域环境中&#xff0c;批量导出域控用户及其所在OU&#xff08;组织单位&#xff09;和组成员身份信息&#xff0c;可以使用PowerShell脚本实现。以下是一个基本的示例脚本&#xff1a; Import-Module ActiveDirectory# 遍历所有用户 Get-ADUser -Filter * -Propertie…

GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成、配置宝塔面板实现持续部署(其三)

看本篇文章的前提是已经部署完GItlab和Jenkins服务器&#xff0c;已经可以手动构建成功&#xff0c;并且经过了很多次实践&#xff0c;对这两款软件基本熟悉。 建议大家按以下顺序看 前端自动化&#xff08;其一&#xff09;部署gitlab 前端自动化&#xff08;其二&#xff0…