Centos/Rocky/Ubuntu
查看系统日志(网络、系统、内核等)
Rocky8默认没有syslog,需要安装:
$ yum install -y rsyslog
# 启动
$ systemctl start rsyslog
# 或者
$ systemctl start syslog
查看:
$ cat /var/log/messages
Ubuntu:
$ cat /var/log/syslog | more
$ cat /var/log/kern.log | more
注:ubuntu没有messages文件,由/var/log/syslog和/var/log/kern.log组成
显示系统硬件信息
$ dmesg
# 带时间显示
$ dmesg -T
# 清空该内存中的信息
$ dmesg -c
注:
dmesg
命令信息保存在内存,显示硬件信息,如硬盘坏了等信息。
Ubuntu:
$ dmesg -T | more
系统启动日志
Centos7中查看:
$ cat /var/log/dmesg
注:该日志文件与
dmesg
命令信息没有关系。
Rocky8在设计之处,在启动过程中不会生成/var/log/dmesg
日志文件。内核环形缓冲区在systemd-journal
和日志文件/var/log/messages
中捕获内核启动信息,通过imjournal rsyslog
插件捕获。
Ubuntu:
$ cat /var/log/dmesq
查看登陆历史
登陆成功的信息:
$ last
注:
last
调用的/var/log/wtmp
文件。该文件为二进制文件,不能直接查看。
Ubuntu:
$ last
/var/log/wtmp
登陆失败的信息:
$ lastb
注:
lastb
调用的/var/log/btmp
文件。该文件为二进制文件,不能直接查看。
Ubuntu:
$ lastb
/var/log/btmp
安全日志
$ cat /var/log/secure
Ubuntu:
$ cat /var/log/auth.log | more
日志切割工具
logrotate可以对日志进行截断、压缩机删除旧的日志文件。
一般logrotate默认安装,如果没有可以使用yum或者apt进行安装:
ubuntu:
$ apt-get install logrotate cron
Centos/Rocky:
$ yum install logrotate crontabs
配置文件
$ cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
# 指定分割周期,周:weekly,日:daily,月:monthly,年:yearly
weekly
# keep 4 weeks worth of backlogs
# 指定保留分割文件数量,4配合weekly就是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
# 指定日志文件存放目录
include /etc/logrotate.d
# system-specific logs may be also be configured here.
配置文件中的可选参数:
compress # 通过gzip压缩转储后的日志
nocompress # 不压缩
copytruncate # 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate # 备份日志文件但是不截断
create 或 mode 或 owner 或 group # 转储文件,使用指定的文件模式创建新的日志文件
nocreate # 不建立新的日志文件
delaycompress # 和compress一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress # 覆盖delaycompress选项,转储同时压缩
errors address # 专储时的错误信息发送到指定的Email地址
ifempty # 即使是空文件也转储,这个是logrotate的缺省选项
notifempty # 如果是空文件的话,不转储
mail address # 把转储的日志文件发送到指定的E-mail地址
nomail # 转储时不发送日志文件
olddir directory # 转储后的日志文件放入指定的目录,必须和minsize或者dateext一起使用
noolddir # 转储后的日志文件和原来的放在一起
prerotate/endscript # 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript # 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily # 指定转储周期为每天
weekly # 指定转储周期为每周
monthly # 指定转储周期为每月
rotate count # 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5个备份
tabootext # 忽略指定扩展名的文件,请使用空格分隔
size size # 当日志文件到达指定的大小时才转储,单位为bytes,指定0时表示关闭此选项
单独定义的日志分割条件:
$ cat /etc/logrotate.d/dnf
/var/log/dnf.log {
daily
missingok
rotate 0
compress
delaycompress
notifempty
create 640 root root
sharedscripts
postrotate
systemctl kill --user=dnf --signal=HUP dnf-3.dnf
endscript
}
journalctl
默认journal日志是从系统启动到现在的日志。
相关路径:/run/log/journal
用法:
$ journalctl [-选项]
选项:
-n 5:查看最后5行
-e:查看最后的日志
-x:增加注释
-o:设置日志格式,比如-o json,-o export,-o short
-p:设置日志级别,emerg、alert、crit、err、warning、notice、info、debug
-f:实时查看日志
-u:指定unit,比如-u chrony
-r:倒叙查看
-k:查看内核日志
journalctl日志持久化
- 配置文件:/etc/systemd/journald.conf
- 持久化路径:/var/log/joural
- 重启服务:systemctl restart systemd-journald
配置文件内容:
Storage=auto
参数:
auto:如果将/var/log/joural创建好后,会自动写入,如果没就不写
persistent:自动创建目录
volatile:放在/run/log/journal,系统重启后丢失
1.创建目录
[root@localhost log]# mkdir /var/log/journal
2.重启服务
[root@localhost log]# systemctl restart systemd-journald
[root@localhost log]# ll /var/log/journal/
总用量 0
drwxr-xr-x 2 root root 28 8月 10 18:04 0d6017811a72466b9f2e30eb7bf4e6ed
SystemMaxUse=
定义日志使用最大空间,如果不定义,则默认不超过磁盘分区的10%的空间,且不能大于4G。如果配置了,此值不能小于1M,如果小于1M按1M算。
SystemMaxFileSize=
定义每个journal文件最大尺寸,默认值为systemmaxuse/8,并且限制范围在(512k~128M),当此参数设置大于等于8M时,则会默认预产生一个8M的文件,然后逐步往里面填充日志
SystemMaxFiles=100
定义最多存多少个文件