21 Linux高级篇-日志管理

news2024/10/5 3:29:41

21 Linux高级篇-日志管理

文章目录

  • 21 Linux高级篇-日志管理
    • 21.1 系统常用的日志
    • 21.2 日志管理服务rsyslogd
      • 21.2.1 *日志记录原理
      • 21.2.2 配置文件/etc/rsyslog.conf
      • 21.2.3 日志文件格式
    • 21.3 日志轮替
      • 21.3.1 配置文件/etc/logrotate.conf & /etc/logrotate.d/
      • 21.3.2 可执行文件/etc/cron.daily/logrotate
    • 21.4 内存日志

  • 学习视频来自于B站【小白入门 通俗易懂】2021韩顺平 一周学会Linux。
  • 可能会用到的资料有如下所示,下载链接见文末:
  1. 《鸟哥的Linux私房菜 基础学习篇 第四版》1
  2. 《鸟哥的Linux私房菜 服务器架设篇 第三版》2
  3. 《韩顺平_2021图解Linux全面升级》3

21.1 系统常用的日志

  日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于系统安全来说很重要,它记录了系统每天发生的各种事情,可以通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。也就是说,日志就是用来记录系统的重大事件。

绝大多数系统日志文件保存在目录/var/log/下(如下图),下表给出了其中最常见的日志:

图21-1 常见的日志

boot.log:与系统启动相关的日志。
message:存放一些重要的信息。
mysqld.log:和数据库有关的日志。
secure:与安全相关的日志。
vmware-install.log:与vmware安装相关的日志。
yum.log:与yum相关的日志。

表21-1 常见的日志(标红的为必须记住)
日志文件说明
/var/log/boot.log系统启动日志。
/var/log/cron记录与系统定时任务相关的日志。
/var/log/cups/记录打印信息的日志。
/var/log/dmesg记录了系统在开机时内核自检的信息。也可以使用dmesg命令直接查看内核自检信息。
/var/log/btmp记录错误登录的日志,二进制文件。不能直接用Vi查看,而要使用lastb命令查看。
命令为:[root@localhost log]#lastb
/var/log/lastlog记录系统中所有用户最后一次的登录时间的日志,二进制文件。使用lastlog命令查看。
/var/Iog/mailog记录邮件信息的日志。
/var/log/message记录系统重要消息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息。
如果系统出现问题,首先要检查的应该就是这个日志文件。
/var/log/secure记录验证和授权方面的信息。
只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,
甚至添加用户和修改用户密码都会记录在这个日志文件中。
/var/log/wtmp永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件,二进制文件。使用last命令查看。
/var/tun/ulmp记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。
这个文件不能用Vi查看,而要使用w、who、users等命令查看。

下面展示一个应用案例:
【案例1】使用Xshell登录root用户,第一次使用错误的密码,第二次使用正确的密码,看看在日志文件/var/log/secure里有没有记录相关信息。

# 首先清空/var/log/secure的原有内容
[root@CentOS76 ~]# echo '' > /var/log/secure
[root@CentOS76 ~]# cat /var/log/secure

[root@CentOS76 ~]# exit
登出

Connection closed.

Disconnected from remote host(CentOS-any) at 07:45:25.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 192.168.204.131:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last failed login: Mon Aug 21 07:45:35 CST 2023 from 192.168.204.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Aug 21 07:43:58 2023 from 192.168.204.1


# 输入一次错误密码、一次正确密码后,再次查看/var/log/secure
[root@CentOS76 ~]# cat /var/log/secure

Aug 21 07:45:24 CentOS76 sshd[14914]: pam_unix(sshd:session): session closed for user root
Aug 21 07:45:33 CentOS76 unix_chkpwd[15030]: password check failed for user (root)
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.204.1  user=root
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Aug 21 07:45:35 CentOS76 sshd[15028]: Failed password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: Accepted password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: pam_unix(sshd:session): session opened for user root by (uid=0)
# 可以看到上述45:35是Failed password,45:37是Accepted password。

21.2 日志管理服务rsyslogd

  那既然日志不仅繁杂而且还很重要,究竟是系统中哪个进程负责记录这些日志呢?CentOS6.x的日志服务(后台进程)是syslogd,CentOS7.6日志服务(后台进程)是rsyslogdrsyslogd功能更强大,并且rsyslogd的使用、日志文件的格式,和syslogd服务兼容的。

# 查询Linux中的rsyslogd服务是否启动
ps aux | grep "rsyslog" | grep -v "grep"
# 查询rsyslogd服务的自启动状态
systemctl list-unit-files | grep rsyslog


# 下面是代码实例
# 查询Linux中的rsyslogd服务是否启动
[root@CentOS76 ~]# ps aux | grep "rsyslog"
root       1232  0.0  0.0 222740  5940 ?        Ssl  8月20   0:02 /usr/sbin/rsyslogd -n
root      15357  0.0  0.0 112828   972 pts/0    S+   08:04   0:00 grep --color=auto rsyslog
# 再继续找出上述结果中不包含grep的行
[root@CentOS76 ~]# ps aux | grep "rsyslog" | grep -v "grep"  # grep的反向查找
root       1232  0.0  0.0 222740  5940 ?        Ssl  8月20   0:02 /usr/sbin/rsyslogd -n
# 查询rsyslogd服务的自启动状态
[root@CentOS76 ~]# systemctl list-unit-files | grep "rsyslog"
rsyslog.service                               enabled 

21.2.1 *日志记录原理

  (*号表示本节很重要)那现在有了后台进程rsyslogd来自动记录日志,那么谁来规定这个所记录日志的格式呢?并且,谁又来控制rsyslogd每天都能自动进行日志轮替呢?也就是如下图所示:

轮替记录
单次记录
include
每天
定时调度
记录所有的日志
定时调度
crond后台进程
logrotate负责轮替
/etc/cron.daily/目录下
rsyslogd后台进程
/etc/rsyslog.conf文件
规定rsyslogd记录的日志类型和级别
/etc/logrotate.conf文件
全局的日志轮替规则
某个文件的日志轮替规则
/etc/logrotate.d/目录
单个文件的日志轮替规则
/var/log/目录
存放所有的日志
图21-2 日志记录原理
  1. 文件/etc/rsyslog.conf规定了rsyslogd记录的日志类型和级别。
  2. 文件/etc/logrotate.conf规定了全局的日志轮替规则以及某个文件的日志轮替规则。
  3. 目录/etc/logrotate.d/整个都被“include”到了文件/etc/logrotate.conf里。

上述三个文件合力控制了后台进程rsyslogd如何来记录日志。此时,再使用重复任务调度进程crond,每天调度一次logrotate,就可以实现日志轮替了。
注:下一大节再详细介绍“日志轮替”。

21.2.2 配置文件/etc/rsyslog.conf

# 查看/etc/rsyslog.conf文件的内容
[root@CentOS76 ~]# cat /etc/rsyslog.conf 
# rsyslog configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark  # provides --MARK-- message capability

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


#### GLOBAL DIRECTIVES ####

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

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

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state


#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log


# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###

  上一小节提到配置文件/etc/rsyslog.conf规定了rsyslogd记录的日志类型和日志级别。那么这里中的含义是什么呢?从#### RULES ####那一栏中可以看到,配置日志时的格式为:

# 一般格式
*.*                   日志文件
# 例子
mail.*      -/var/log/maillog   # 将日志类型为mail的所有日志信息,无论什么日志级别,都记录到文件-/var/log/maillog中去。
*.emerg           :omusrmsg:*   # 无论是什么日志类型,只要日志级别是emerg的日志信息,都记录到相应文件中去。
local7.*    /var/log/boot.log   # 将日志类型是local7,无论是什么日志级别,都记录到文件/var/log/boot.log中去。

其中第一个*代表日志类型,第二个*代表日志级别。常用的“日志类型”和“日志级别”如下表所示:

表21-2 日志类型和日志级别
日志类型含义日志级别含义
*表示所有类型*表示所有级别
authpam产生的日志debug 有调试信息的,日志通信最多
authprivssh、ftp等登录信息的验证信息info 一般信息日志,最常用
corn时间任务相关notice 最具有重要性的普通条件的信息
kern内核warning警告级别
lpr打印err 错误级别,阻止某个功能或者模块不能正常工作的信息
mail邮件crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
mark(syslog)-rsyslog服务内部的信息,时间标识alert 需要立刻修改的信息
news新闻组emerg 内核崩溃等重要信息
user用户程序产生的相关信息none 什么都不记录
uucpunix to nuix copy主机之间相关的通信从上到下,日志级别从低到高,记录信息越来越少
local 1-7自定义的日志设备

21.2.3 日志文件格式

  那根据配置文件中的文件类型和文件级别,rsyslogd后台进程就写下了相应的日志文件。但写下来不是目的,得让我们人类看懂才行啊,换句话说,这些日志中都包含了哪些内容呢?下面就来说明,由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下4列:

  1. 事件产生的时间
  2. 产生事件的服务器的主机名
  3. 产生事件的服务名或程序名
  4. 事件的具体信息

比如现在就拿/var/log/secure日志举例,来分析一下这个日志中的内容:

[root@CentOS76 ~]# cat /var/log/secure

Aug 21 07:45:24 CentOS76 sshd[14914]: pam_unix(sshd:session): session closed for user root
Aug 21 07:45:33 CentOS76 unix_chkpwd[15030]: password check failed for user (root)
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.204.1  user=root
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Aug 21 07:45:35 CentOS76 sshd[15028]: Failed password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: Accepted password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: pam_unix(sshd:session): session opened for user root by (uid=0)

日志/var/log/secure中记录的是用户验证和授权方面的信息:

  • 第一列:Aug 21 07:45:24,显然是记录了事件产生的时间。
  • 第二列:CentOS76,记录了产生事件的服务器的主机名。
  • 第三列:sshd[14914],记录了产生事件的服务名。
  • 第四列:后面记录的就是事件的具体信息。

下面展示一个实际案例:
【案例1】在/etc/rsyslog.conf中添加一个日志文件/var/log/lyl.log,记录所有类型、所有级别的日志信息。然后重启、登录,查看sshd服务相关事件是否被记录下来。

[root@CentOS76 ~]# vim /etc/rsyslog.conf
########################################
# 在文件中添加如下代码:
# 增加自定义的日志
*.*    /var/log/lyl.log
########################################
[root@CentOS76 ~]# > /var/log/lyl.log       # 创建文件,当然不创建也行
[root@CentOS76 ~]# cat /var/log/lyl.log     # 查看当前文件内容,显然为空
[root@CentOS76 ~]# reboot

# 重启后立即查看日志信息
[root@CentOS76 ~]# cat /var/log/lyl.log | grep sshd
Aug 21 08:39:49 CentOS76 sshd[1198]: Server listening on 0.0.0.0 port 22.
Aug 21 08:39:49 CentOS76 sshd[1198]: Server listening on :: port 22.
Aug 21 08:40:11 CentOS76 sshd[1871]: Accepted password for root from 192.168.204.1 port 58895 ssh2
Aug 21 08:40:11 CentOS76 sshd[1871]: pam_unix(sshd:session): session opened for user root by (uid=0)

注:做完该案例先别急着删,下一节案例“自定义日志轮替”还会用到。

21.3 日志轮替

  前面在介绍日志记录原理时提到了“日志轮替”。通俗来说,“日志轮替”就是每隔一段时间(每天/每周/每月)或者是当日志文件足够大了之后,就把旧的日志文件移动并改名,同时建立新的空日志文件来记录新的内容,当旧日志文件数量足够多时还要删除最旧的日志,比如经常听说“小区监控一般保存一个月左右”,就类似于这种情况。比如下图就给出了日志轮替的示意图:

轮替后
轮替前
自动改名
自动改名
自动改名
secure(新增)
secure.1
secure.2
secure.3
secure
secure.1
secure.2
secure.3(删除)
注:假设日志最大保存个数设置为4
图21-3 日志轮替示意图

  上图在发生日志轮替时,日志文件会自动改名,但也有无需改名的配置,那同样也有控制轮替周期的参数。在CentOS7中,这些如何进行轮替的配置参数都存放在/etc/logrotate.conf文件中,然后通过/etc/cron.daily/目录下的logrotate进行日志轮替管理:

比如现在在/etc/logrotate.conf文件中修改/var/log/secure参数:

  1. 没有“dateext”参数:和上图所示情况相同。
  2. 有“dateext”参数:那么日志会用日期来作为日志文件的后缀,例如“secure-20201010”。这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志个数,删除多余的日志文件即可。

21.3.1 配置文件/etc/logrotate.conf & /etc/logrotate.d/

  规定日志轮替的配置文件有以下两个:

  1. 文件/etc/logrotate.conf:为logrotate的全局配置文件,规定了全局的日志轮替策略/规则,也可以单独给某个日志文件指定策略,若没指定就会采用默认策略。
  2. 目录/etc/logrotate.d下的所有文件:每个文件都单独给某个日志文件指定轮替策略。但该目录中的文件都会被“include”到上面的/etc/logrotate.conf配置文件中。

/etc/logrotate.conf文件内容:

# 下面展示/etc/logrotate.conf的内容,并附上中文注释
[root@CentOS76 ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly,每周对日志文件进行一次轮替
weekly

# keep 4 weeks worth of backlogs,共保存4份日志文件,当建立新的日志文件时,旧的将会被删除
rotate 4

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

# use date as a suffix of the rotated file,使用日期作为日志轮替文件的后缀
dateext

# uncomment this if you want your log files compressed,日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩
#compress

# RPM packages drop log rotation information into this directory
# /etc/logrotate.d/目录中所有的配置也会被读取进来,该目录一般存放某文件的单独轮替规则,和写在下面等价。
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
# 下面是单独设置,优先级更高。
# 给/var/log/wtmp单独设置的轮替规则
/var/log/wtmp {
    monthly                 # 每月对日志文件进行一次轮替
    create 0664 root utmp   # 建立的新日志文件,权限是0664,所有者是root,所属组是utmp组
    minsize 1M              # 日志文件最小轮替大小是1MB。也就是日志一定要超过1MB才会轮替,否则就算时间达到一个月,也不进行日志转储。
    rotate 1                # 仅保留一个日志备份。也就是只有wtmp和wtmp.1日志保留而已
}
# 给/var/log/btmp单独设置的轮替规则
/var/log/btmp {
    missingok               # 如果日志不存在,则忽略该日志的警告信息
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

/etc/logrotate.d/目录内容:
比如下面/etc/logrotate.d/bootlog就记录了/var/log/boot.log的日志轮替规则:

[root@CentOS76 ~]# ls /etc/logrotate.d/
bootlog  cups       glusterfs    libvirtd       mysql  ppp     samba  syslog          yum
chrony   firewalld  iscsiuiolog  libvirtd.qemu  numad  psacct  sssd   wpa_supplicant
[root@CentOS76 ~]# cat /etc/logrotate.d/bootlog 
/var/log/boot.log
{
    missingok
    daily
    copytruncate
    rotate 7
    notifempty
}

日志轮替参数说明:
  那上面这两个日志轮替配置文件中的配置是什么意思呢?也就是下表给出的日志轮替参数说明:

图21-2 日志轮替参数说明
参数参数说明
daily日志的轮替周期是每天
weekly日志的轮替周期是每周
monthly日志的轮替周期是每月
rotate 数字保留的日志文件的个数。0指没有备份。
compress日志轮替时,旧的日志进行压缩。
create mode owner group建立新日志,同时指定新日志的权限与所有者和所属组。
mail address当日志轮替时,输出内容通过邮件发送到指定的邮件地址。
missingok如果日志不存在,则忽略该日志的警告信息。
notifempty如果日志为空文件,则不进行日志轮替。
minsize 大小日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替。
size 大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。
dateext使用日期作为日志轮替文件的后缀。
sharedscripts在此关键字之后的脚本只执行一次。
prerotate/endscript在日志轮替之前执行脚本命令。
postrotate/endscript在日志轮替之后执行脚本命令。

下面展示一个应用案例:
【案例1】将上一大节最后的案例/var/log/lyl.log日志加入日志轮替。

方法一:直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略。
方法二:【推荐】/etc/logrotate.d/目录中新建立该日志的轮替策略文件。推荐使用该方法,因为系统中需要轮替的日志非常多,如果全都直接写入/etc/logrotate.conf配置文件,那么这个文件的可管理性就会非常差,不利于文件的维护。

注:具体轮替的效果可以参考/var/log下的boot.log情况

[root@CentOS76 ~]# vim /etc/logrotate.d/lyllog
#################################
# 在文件中添加如下内容,以规定轮替策略:
/var/log/lyl.log {
    missingok       # 如果日志不存在,则忽略该日志的警告信息。
    daily           # 每天轮替一次
    copytruncate    # 拷贝截断
    rotate 7        # 最多保留7份日志
    notifempty      # 如果日志为空文件,则不进行日志轮替。
}
#################################
[root@CentOS76 ~]# ll /etc/logrotate.d/
总用量 72
-rw-r--r--. 1 root root  91 930 2020 bootlog
-rw-r--r--. 1 root root 160 919 2018 chrony
-rw-r--r--. 1 root root  71 930 2020 cups
-rw-r--r--. 1 root root  93 101 2020 firewalld
-rw-r--r--. 1 root root 758 102 2020 glusterfs
-rw-r--r--. 1 root root 172 930 2016 iscsiuiolog
-rw-r--r--. 1 root root 165 1014 2020 libvirtd
-rw-r--r--. 1 root root 142 1014 2020 libvirtd.qemu
-rw-r--r--. 1 root root 302 821 10:17 lyllog
-rw-r--r--. 1 root root 972 413 2019 mysql
-rw-r--r--. 1 root root 106 411 2018 numad
-rw-r--r--. 1 root root 136 228 2020 ppp
-rw-r--r--. 1 root root 408 83 2017 psacct
-rw-r--r--. 1 root root 115 1014 2020 samba
-rw-r--r--. 1 root root 237 1016 2020 sssd
-rw-r--r--. 1 root root 224 1013 2020 syslog
-rw-r--r--. 1 root root 100 1031 2018 wpa_supplicant
-rw-r--r--. 1 root root 103 102 2020 yum
# 于是后面lyl.log也就会每天自动轮替了,有点类似于下面的boot.log
[root@CentOS76 ~]# ll /var/log | grep boot
-rw-------. 1 root   root     28520 821 10:09 boot.log
-rw-------. 1 root   root     82271 727 10:13 boot.log-20230727
-rw-------. 1 root   root     14399 820 17:35 boot.log-20230820

21.3.2 可执行文件/etc/cron.daily/logrotate

  日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务crond。在目录/etc/cron.daily/下就会发现可执行文件logrotate,这个依赖定时任务执行的可执行文件就是日志轮替的关键。

[root@CentOS76 ~]# ll /etc/cron.daily/
总用量 12
-rwx------. 1 root root 219 41 2020 logrotate
-rwxr-xr-x. 1 root root 618 1030 2018 man-db.cron
-rwx------. 1 root root 208 411 2018 mlocate

至此,前面的“日志记录原理”一节的图便介绍完毕。

21.4 内存日志

  最后,来看一下“内存日志”。Linux系统中有一部分日志是实时变化的,会先写到内存中,而不是先写到文件中去,这部分日志就被称为“内存日志”,如与内核相关的日志。注意,重启后内存日志会被清空!journalctl指令可以查看内存日志,下面是journalctl的常用指令:

journalctl                                  # 查看全部
journalctl -n 3                             # 查看最新3条
journalctl --since 19:00 --until 19:10:10   # 查看起始时间到结束时间的日志可加日期
journalctl -p err                           # 报错日志
journalctl -o verbose                       # 日志详细内容
journalctl _PID=1245 _COMM=sshd             # 查看包含这些参数的日志(在详细日志查看)
journalctl | grep sshd                      # 查找sshd相关的日志

下面展示一个应用案例:
【案例1】使用journalctl | grep sshd来查看系统重启前后,内存日志是否有变化。

[root@CentOS76 ~]# journalctl | grep sshd
821 10:09:26 CentOS76 sshd[1195]: Server listening on 0.0.0.0 port 22.
821 10:09:26 CentOS76 sshd[1195]: Server listening on :: port 22.
821 10:10:28 CentOS76 sshd[1886]: Accepted password for root from 192.168.204.1 port 62073 ssh2
821 10:10:29 CentOS76 sshd[1886]: pam_unix(sshd:session): session opened for user root by (uid=0)
[root@CentOS76 ~]# reboot

[root@CentOS76 ~]# journalctl | grep sshd
821 10:46:25 CentOS76 sshd[1190]: Server listening on 0.0.0.0 port 22.
821 10:46:25 CentOS76 sshd[1190]: Server listening on :: port 22.
821 10:46:39 CentOS76 sshd[1729]: error: Received disconnect from 192.168.204.1 port 63284:0:  [preauth]
821 10:46:39 CentOS76 sshd[1729]: Disconnected from 192.168.204.1 port 63284 [preauth]
821 10:46:40 CentOS76 sshd[1733]: Accepted password for root from 192.168.204.1 port 63287 ssh2
821 10:46:40 CentOS76 sshd[1733]: pam_unix(sshd:session): session opened for user root by (uid=0)

  1. 《鸟哥的Linux私房菜 基础学习篇 第四版》 ↩︎

  2. 《鸟哥的Linux私房菜 服务器架设篇 第三版》 ↩︎

  3. 《韩顺平_2021图解Linux全面升级》 ↩︎

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

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

相关文章

memcpy 函数

目录 函数介绍: 函数解析: memcpy函数复制的数据长度 内存重叠 凑不出元素的字节数 模拟memcpy 函数介绍: memcpy函数是一个用于内存复制的函数,声明在 string.h 中(C是 cstring)。 其原型是&…

Excel操作技巧:如何粘贴保留单元格大小

有时我们需要在Excel中复制和粘贴并保持单元格大小。它在工作中节省了很多时间。也使数据集更具吸引力。在这篇文章中,我们将通过一些简单快捷的示例和解释来学习如何做到这一点。 一、使用上下文菜单在Excel中复制和粘贴以保持单元格大小 上下文菜单是Excel的一个重要功能。…

Openlayers 叠加天地图-中国近海海洋等深面图层服务

Openlayers 叠加天地图-中国近海海洋等深面图层服务 核心代码完整代码:在线示例 偶然发现天地图有一个近海海洋图层,觉得不错,于是尝试叠加一下,花费了一些时间,叠加成功,这里分享一下。 本文包括核心代码…

将OSGB格式数据转换为3d tiles的格式

现有需求需要将已有的一些OSGB数据加载到CesiumJS中展示,但是CesiumJS本身不支持osbg格式的数据渲染所以我们需要将其转换一下,有两种格式可以转换一种是glTF格式,另一种是我们今天要介绍的3D Tiles格式 下载开源工具 在github上其实有好多这种工具,每个工具的用法大同小异,这…

Python2021年3月Python二级 -- 编程题解析

题目一 设计一个停车场收费计算器 (收费规则,2小时以内收费5元,超出部分每小时加收2元),:要求如下: 1.设计的程序要能输入停车时间 (单位为小时,输入的小时数为整数 2.程序可以根据输入的停车时间自动计算出停车费,并且…

java操作cmd执行adb命令【搬代码】

操作具体代码如下: 须注意的是commandStr0里面如果不加 cmd /的话会报 java.io.IOException: Cannot run program "cd": CreateProcess error2, 系统找不到指定的文件。的错误 package com.znzdh.until;import java.io.BufferedReader; import java.io.…

Unity 之 方括号[ ] 的用法以及作用

文章目录 在Unity中,方括号 [ ] 通常用于表示属性、特性(Attributes)或者元数据(Metadata)。这些标记提供了附加信息,可以用于修改类、方法、字段等的行为或者在编辑器中进行设置。 以下是一些常见的用法&…

面试:25Wqps高吞吐写Mysql,100W数据4秒写完,如何实现?

25Wqps是什么概念? QPS(Queries Per Second):是衡量信息检索系统(例如搜索引擎或数据库)在一秒钟内接收到的搜索流量的一种常见度量。 通过概念我们能很清楚知道 QPS 并发数/响应时间,即100W…

conda创建python虚拟环境

1.查看当前存在那些虚拟环境 conda env list conda info -e 2.conda安装虚拟环境 conda create -n my_env_name python3.6 2.1在anaconda下改变python版本 当前3.7 安装3.7 conda create -n py37 python3.7 conda activate py37 conda create -n py37 python3.7conda a…

多通道振弦数据记录仪应用于大坝岩土工程监测

多通道振弦数据记录仪应用于大坝岩土工程监测 随着现代科技的不断发展,多通道振弦数据记录仪的应用越来越广泛,其中在大坝岩土工程监测中的应用也越来越普遍。多通道振弦数据记录仪通过采集振动信号的信息,可以有效地监测大坝的安全性和稳定…

【校招VIP】数据库理论之存储过程

考点介绍: 存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能…

给数组中多次出现的数据添加不同的标记

/*** params 取数组中第二次出现的元素之后的数据* returns*/ export const getElementsAfterSecondOccurrence (arr, column, targetValue) > {let count 0;let secondIndex -1;for (let i 0; i < arr.length; i) {if (arr[i][column] targetValue) {count;if (co…

VmWare安装CentOs8

文章目录 创建虚拟机1、创建虚拟机2、选择虚拟机硬件兼容性3、安装客户机操作系统4、安装客户机操作系统5、命名虚拟机6、处理器配置7、分配虚拟机的内存8、配置网络类型9、选择I/O控制器类型10、选择磁盘类型11、选择磁盘12、指定磁盘容量13、指定磁盘文件14、完成创建 2.安装…

STM32的HAL库的定时器使用

用HAL库老是忘记了定时器中断怎么配置&#xff0c;该调用哪个回调函数。今天记录一下&#xff0c;下次再忘了就来翻一下。 系统的时钟配置&#xff0c;定时器的时钟是84MHz 这里定时器时钟是84M&#xff0c;分频是8400后&#xff0c;时基就是1/10000s&#xff0c;即0.1ms。Per…

百度文心一言GPT免费入口也来了!!!

文心一言入口地址&#xff1a;https://cloud.baidu.com/wenxin.html?daohang

【校招VIP】前端校招考点之UDP

考点介绍&#xff1a; UDP是非面向连接协议&#xff0c;使用udp协议通讯并不需要建立连接&#xff0c;它只负责把数据尽可能发送出去&#xff0c;并不可靠&#xff0c;在接收端&#xff0c;UDP把每个消息断放入队列中&#xff0c;接收端程序从队列中读取数据。 『前端校招考点…

华为云 sfs 服务浅谈

以root用户登录弹性云服务器。 以root用户登录弹性云服务器。 安装NFS客户端。 查看系统是否安装NFS软件包。 CentOS、Red Hat、Oracle Enterprise Linux、SUSE、Euler OS、Fedora或OpenSUSE系统下&#xff0c;执行如下命令&#xff1a; rpm -qa|grep nfs Debian或Ubuntu系统下…

微信小程序 校园周边美食商城分享系统

管理员、会员、商家可通过Android系统手机打开系统&#xff0c;注册登录后可进行管理员后端&#xff1b;首页、个人中心、会员管理、商家管理、美食类型管理、美食信息管理、美食交流、我的收藏管理、系统管理、订单管理&#xff0c;会员前端&#xff1b;首页、美食信息、美食交…

PHP8的箭头函数-PHP8知识详解

php 7.4 引入了箭头函数&#xff08;Arrow Functions&#xff09;&#xff0c;并在 PHP 8 中得到了进一步改进和扩展。 箭头函数是一种更简洁的匿名函数形式&#xff0c;它们提供了一种更便捷的方式来定义轻量级的、单行的回调函数。 箭头函数的语法如下&#xff1a; fn (参…