系统日志查看journalctl命令详解

简介

从2012年开始,大部分linux发行版本开始从传统的systemv 初始化系统移植到一个叫做systemd的全新系统。systemd用来启动系统并管理进程。systemd包含了一个叫做journalctl的辅助组件,其主要作用是管理系统的事件日志记录。
journalctl可以查看所有的系统日志文件,由于日志信息量很大,journalctl还提供了各种参数帮助用户更快速的定位到日志信息。默认情况下,用户都可以访问自己的日志。对于系统主日志和其他用户的日志,仅限于有权限的用户访问,比如root用户,wheel组和systemd组的用户。
该工具是从message这个文件里读取信息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf
journalctl功能强大,用法非常多。本文将介绍journalctl的相关使用方法。

journalctl

如果不带参数,journalctl将显示所有日志的信息。 (从旧到新)

systemd日志查看_服务器

journalctl -r

-r参数表示反序输出,(从新到旧)

systemd日志查看_日志文件_02

journalctl -k

查看内核日志(不显示应用日志)

systemd日志查看_systemd日志查看_03

journalctl -f

要使用 journalctl 跟踪日志文件 (读取最新条目), 只需在命令后加参数 “-f” 即可。
会实时滚动显示最新日志信息。

systemd日志查看_systemd日志查看_04

journalctl -n num

指定输出显示行数的大小;我们可以通过-n 或者 --lines=参数来指定显示的行数大小。

systemd日志查看_日志文件_05

显示指定时间的事件日志

journalctl可以显示指定时间段内发生的事件日志。 通过since和until 参数来实现。其中日期的格式是“YYYY-MM-DD HH:MM:SS” 比如:journalctl --since "1 hour ago" ,查看1小时前到现在的日志journalctl --since “2016-08-04 20:00:00” --until “2016-08-04 20:15:00”查看8月4日晚上的日志

journalctl --since="2012-10-3018:17:16"
journalctl --since "20 minago"
journalctl --since yesterday
journalctl --since"2015-01-10" --until "2015-01-11 03:00"
journalctl --since 09:00 --until"1 hour ago"
journalctl --since"15:15" --until now

systemd日志查看_运维_06

systemd日志查看_日志文件_07

journalctl -u *.service

查看某些服务的日志:

journalctl -u httpd.service 查看web服务的日志; journalctl -u httpd.service -u crond.service

systemd日志查看_systemd日志查看_08

合并显示多个Unit的日志

journalctl -u nginx.service -u php-fpm.service --since today

查看某个路径的脚本的日志

[root@NercAuth ~]# journalctl /home/docker/001.mssql/DB_Backup.sh
-- No entries --

查看指定优先级(及其以上级别)的日志

日志优先级共有8级 journalctl -p err -b

Level

Description

0

emerg

1

alert

2

crit

3

err

4

warning

5

notice

6

info

7

debug

不分页标准输出

日志默认分页输出--no-pager改为正常的标准输出

journalctl --no-pager

显示日志占据的硬盘空间

journalctl --disk-usage

指定日志文件占据的最大空间

journalctl --vacuum-size=1G

指定日志文件保存多久

journalctl --vacuum-time=1years