Linux 系统服务日志查询 journalctl:查询 systemd 日记

这篇具有很好参考价值的文章主要介绍了Linux 系统服务日志查询 journalctl:查询 systemd 日记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

journalctl:查询 systemd 日记

systemd 在取代 SUSE Linux Enterprise 12 中的传统 init 脚本时(参见第 13 章 “systemd 守护程序”),引入了自身的称为日记的日志记录系统。由于所有系统事件都将写入到日记中,因此,用户不再需要运行基于 syslog 的服务。

日记本身是 systemd 管理的系统服务,全名为 systemd-journald.service。它会根据从内核、用户进程、标准输入和系统服务错误收到的日志记录信息,维护结构化的索引日记,并以此方式来收集和储存日志记录数据。systemd-journald 服务默认处于启用状态。

# systemctl status systemd-journald
systemd-journald.service - Journal Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static)
   Active: active (running) since Mon 2014-05-26 08:36:59 EDT; 3 days ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 413 (systemd-journal)
   Status: "Processing requests..."
   CGroup: /system.slice/systemd-journald.service
           └─413 /usr/lib/systemd/systemd-journald
[...]

将日记设为永久

默认情况下,日记在 /run/log/journal/ 中储存日志数据。由于/run/目录具有易失本性,因此,在重引导时会丢失日志数据。要永久保存日志数据,/var/log/journal/ 目录必须存在且具有正确的所有权和权限,如此,systemd-journald 服务便可在其中储存其数据。systemd 将为您创建该目录,如果您执行以下操作,它将会切换到永久日志记录:

  1. 以 root 身份打开 /etc/systemd/journald.conf 进行编辑。
  2. 将包含 Storage= 的行取消注释,并将它更改为
  3. 保存该文件,然后重启动 systemd-journald:
# vi /etc/systemd/journald.conf

[...]
[Journal]
Storage=persistent
#Compress=yes
[...]

# systemctl restart systemd-journald

journalctl 的有用开关

本节介绍了一些可用来增强 journalctl 默认行为的常见有用选项。journalctl 手册页 man 1 journalctl 中介绍了所有开关。

要显示与特定可执行文件相关的所有日记讯息,请指定该可执行文件的完整路径:

journalctl /usr/lib/systemd/systemd
参数 说明
-f 仅显示最近的日记讯息,另外,在将新的日志项添加到日记时会列显这些新项。
-e 列显讯息并跳转到日记末尾,以便在页导航中显示最新的项。
-r 以倒序列显日记讯息,让最新的项列在最前面。
-k 仅显示内核讯息。这等效于字段匹配 _TRANSPORT=kernel(参见第 15.3.3 节 “根据字段过滤”)。
-u 仅显示指定 systemd 单元的讯息。这等效于字段匹配 _SYSTEMD_UNIT=UNIT(参见 第 15.3.3 节 “根据字段过滤”)。
例:
# journalctl -u apache2
[...]
Jun 03 10:07:11 pinkiepie systemd[1]: Starting The Apache Webserver...
Jun 03 10:07:12 pinkiepie systemd[1]: Started The Apache Webserver.

过滤日记输出

如果不结合任何开关调用 journalctl,它将显示日记的整个内容,最旧的项列在最前面。您可按特定的开关和字段过滤输出。

根据引导编号过滤

journalctl 可以根据特定的系统引导过滤讯息。要列出所有可用引导,请运行

# journalctl --list-boots
-1 097ed2cd99124a2391d2cffab1b566f0 Mon 2014-05-26 08:36:56 EDT—Fri 2014-05-30 05:33:44 EDT
 0 156019a44a774a0bb0148a92df4af81b Fri 2014-05-30 05:34:09 EDT—Fri 2014-05-30 06:15:01 EDT

第一列列出引导偏移:0 表示当前引导,-1 表示上一次引导,-2 表示再上一次引导,以此类推。第二列包含引导 ID,其后是特定引导的限制时间戳。

显示当前引导中的所有讯息:
# journalctl -b

如果需要查看来自前一引导的日记讯息,请加一个偏移参数。下面的示例将输出前一引导的讯息:
# journalctl -b -1

另一种方法是根据引导 ID 列出引导讯息。要实现此目的,请使用 _BOOT_ID 字段:
# journalctl _BOOT_ID=156019a44a774a0bb0148a92df4af81b

根据时间间隔过滤

您可通过指定开始日期和/或结束日期来过滤 journalctl 的输出。日期规范应采用类似于“2014-06-30 9:17:16”的格式。如果省略时间部分,则会假设为午夜。如果省略秒,则会假设为“:00”。如果省略日期部分,则会假设为当日。您也可以不采用数字表示,而是指定关键字“yesterday”、“today”或“tomorrow”。它们表示当日前一天、当日或者当日后一天的午夜。如果指定“now”,则表示当前时间。您还可以指定以 - 或 + 为前缀的相对时间,分别表示当前时间之前或之后的特定时间。

仅显示从现在开始生成的新讯息,并持续更新输出:
# journalctl --since "now" -f

显示从昨天午夜到 3:20AM 的所有讯息:
# journalctl --since "today" --until "3:20"

根据字段过滤

您可以按特定的字段过滤日记输出。要匹配的字段语法为 FIELD_NAME=MATCHED_VALUE,例如 _SYSTEMD_UNIT=httpd.service。您可以在单个查询中指定多个匹配条件,以进一步过滤输出讯息。有关默认字段的列表,请参见 man 7 systemd.journal-fields

显示特定进程 ID 生成的讯息:
# journalctl _PID=1039

显示属于特定用户 ID 的讯息:
# journalctl _UID=1000

显示来自内核环缓冲区的讯息(与 dmesg 的生成结果相同):
# journalctl _TRANSPORT=kernel

显示来自服务的标准输出或错误输出的讯息:
# journalctl _TRANSPORT=stdout

仅显示指定服务生成的讯息:
# journalctl _SYSTEMD_UNIT=avahi-daemon.service

如果指定了两个不同的字段,则仅显示同时与两个表达式匹配的项:
# journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1488

如果两个匹配条件引用了相同的字段,则显示与两个表达式中任意一个匹配的所有项:
# journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

您可以使用“+”分隔符将两个表达式组合成一个逻辑“OR”。以下示例将显示来自进程 ID 为 1480 的 Avahi 服务进程的所有讯息,以及来自 D-Bus 服务的所有讯息:
# journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1480 + _SYSTEMD_UNIT=dbus.service

调查 systemd 错误

本节将介绍一个简单的示例,演示如何找出并修复在 apache2 启动期间 systemd 报告的错误。

尝试启动 apache2 服务:

# systemctl start apache2
Job for apache2.service failed. See 'systemctl status apache2' and 'journalctl -xn' for details.
COPY

我们来看看该服务的状态如何:

# systemctl status apache2
apache2.service - The Apache Webserver
   Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-06-03 11:08:13 CEST; 7min ago
  Process: 11026 ExecStop=/usr/sbin/start_apache2 -D SYSTEMD -DFOREGROUND \
           -k graceful-stop (code=exited, status=1/FAILURE)

导致错误的进程 ID 为 11026。
显示与进程 ID 11026 相关的详细讯息:

# journalctl -o verbose _PID=11026
[...]
MESSAGE=AH00526: Syntax error on line 6 of /etc/apache2/default-server.conf:
[...]
MESSAGE=Invalid command 'DocumenttRoot', perhaps misspelled or defined by a module
[...]

修复 /etc/apache2/default-server.conf 中的拼写错误,启动 apache2 服务,然后列显其状态:

# systemctl start apache2 && systemctl status apache2
apache2.service - The Apache Webserver
   Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)
   Active: active (running) since Tue 2014-06-03 11:26:24 CEST; 4ms ago
  Process: 11026 ExecStop=/usr/sbin/start_apache2 -D SYSTEMD -DFOREGROUND
           -k graceful-stop (code=exited, status=1/FAILURE)
 Main PID: 11263 (httpd2-prefork)
   Status: "Processing requests..."
   CGroup: /system.slice/apache2.service
           ├─11263 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]
           ├─11280 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]
           ├─11281 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]
           ├─11282 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]
           ├─11283 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]
           └─11285 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]

Journald 配置

通过修改

/etc/systemd/journald.conf

可调整 systemd-journald 服务的行为。本节只介绍了基本的选项设置。有关完整的文件描述,请参见 man 5 journald.conf。请注意,要使更改生效,需要使用以下命令重启动日记
# systemctl restart systemd-journald

更改日记大小限制

如果将日记日志数据保存到永久位置(参见第 15.1 节 “将日记设为永久”),这些数据最多会占用/var/log/journal 所在文件系统空间的 10%。例如,如果 /var/log/journal 位于一个 30 GB /var 的分区中,则日记最多会占用 3 GB 磁盘空间。要更改此限制,请更改(并取消注释)SystemMaxUse 选项:SystemMaxUse=50M

将日记转发到 /dev/ttyX

您可以将日记转发到终端设备,以便在首选的终端屏幕(例如 /dev/tty12)上了解相关的系统讯息。将以下 journald 选项更改为

ForwardToConsole=yes
TTYPath=/dev/tty12

将日记转发到 Syslog 工具

Journald 与传统的 syslog 实施(例如 rsyslog)向后兼容。请确保满足以下条件:
已安装 rsyslog。

# rpm -q rsyslog
rsyslog-7.4.8-2.16.x86_64

已启用 rsyslog 服务。

# systemctl is-enabled rsyslog
enabled

已在 /etc/systemd/journald.conf 中启用转发到 syslog 设置。

ForwardToSyslog=yes

使用 YaST 过滤 systemd 日记

过滤 systemd 日记的简单方法(无需处理journalctl 语法)是使用 YaST 日记模块。使用 sudo zypper in yast2-journal 安装该模块后,请在 YaST 中选择 系统 › Systemd 日记 启动该模块。也可以在命令行中输入 sudo yast2 journal 来启动该模块。
systemctl 日志查看,linux,运维,journalctl,log,systemd

模块将在表中显示日志项。使用顶部的搜索框可以搜索包含特定字符的项,这类似于使用 grep。要按日期和时间、单位、文件或优先级过滤项,请单击更改过滤器,然后设置相应的选项。文章来源地址https://www.toymoban.com/news/detail-728215.html

到了这里,关于Linux 系统服务日志查询 journalctl:查询 systemd 日记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux | systemd】systemd(systemctl命令)运行服务的配置文件详解

    【systemctl】让程序以守护进程的方式在后台运行 首先需要创建一个systemd unit 配置文件,比如:verdaccio.service,一般放在 /lib/systemd/system/ 下 添加配置如下: 开机自启动:systemctl enable verdaccio.service 立即启动:systemctl start verdaccio.service 重新启动:systemctl restart verdaccio.service 运

    2024年01月17日
    浏览(46)
  • Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart(systemd教程)

    我们在linux系统下启动一个程序,一般用一条命令,或者执行一个脚本就行了,那么,为什么还要将程序配置成服务?这样做有什么好处? 1. 自动启动 配置成服务后,程序将在系统启动时自动启动,无需手动操作。这样可以确保程序在系统重启后能够自动运行,避免因为人为

    2024年02月05日
    浏览(48)
  • 在 Linux 中使用 systemd 注册服务

    Systemd 是一种现代的 Linux 系统初始化系统和服务管理器。它旨在管理系统服务的初始化、配置和控制。Systemd 的一个关键特性是它可以管理服务,这些服务是为系统提供特定功能的后台进程。在本指南中,我们将探讨如何使用 systemd 在 Linux 中注册服务。 在 Linux 系统中,system

    2024年02月13日
    浏览(50)
  • Linux 管理 Systemd 服务的命令行工具

    systemctl 是用于管理 Systemd 服务的命令行工具。下面是一些常用的 systemctl 命令及其功能: 1. `systemctl enable service`:启用一个服务,使其在系统启动时自动启动。 2. `systemctl start service`:启动一个服务。 3. `systemctl stop service`:停止一个服务。 4. `systemctl restart service`:重新启动一

    2024年01月16日
    浏览(38)
  • Linux文件系统与日志服务管理

    目录 一.Linux文件系统 1.inode表和block (1)inode (2)block 2.查看inode号命令 3.Linux系统文件三种主要时间属性 4.磁盘空间还剩余很多但无法继续创建文件 5.inode大小 二.日志 1.日志保存位置 2.日志文件的分类 (1)内核及系统日志 (2)用户日志 (3)程序日志 3.常见的日志文件

    2024年02月01日
    浏览(41)
  • Linux学习之Ubuntu 20使用systemd管理OpenResty服务

    sudo cat /etc/issue 可以看到操作系统的版本是 Ubuntu 20.04.4 LTS , sudo lsb_release -r 可以看到版本是 20.04 , sudo uname -r 可以看到内核版本是 5.5.19 , sudo make -v 可以看到版本是 GNU Make 4.2.1 。 需要先参考我的博客《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用

    2024年02月11日
    浏览(35)
  • Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

    我们在linux系统下启动一个程序,一般用一条命令,或者执行一个脚本就行了,那么,为什么还要将程序配置成服务?这样做有什么好处? 1. 自动启动 配置成服务后,程序将在系统启动时自动启动,无需手动操作。这样可以确保程序在系统重启后能够自动运行,避免因为人为

    2024年02月12日
    浏览(47)
  • 【ubuntu】systemd 管理系统组件和服务之间的依赖关系

    systemd 使用单位(units)来定义系统组件和服务,每个单位都有一个对应的配置文件,其中定义了单位的属性和依赖关系。 systemd 使用使用配置文件来管理服务之间的依赖关系。这些配置文件通常位于 /etc/systemd/system/ 目录或 /usr/lib/systemd/system/ 目录中,具体取决于系统配置。

    2024年02月11日
    浏览(39)
  • 将java项目打包部署在linux系统上(配置成systemd)

    1.前置条件 1.0一些一些小问题 1.1mysql安装 1.2redis安装 1.3nginx安装 1.4jdk安装 2.打包部署 接下来就是打包,将打包文件拉上来 还有nginx的配置 还有前端包打包上传小命令 这些下期再写...

    2024年03月09日
    浏览(48)
  • Linux环境中,通过systemd服务将Spring Boot Jar包设置为开机自启动

    1、进入/etc/systemd/system目录,并创建一个名为 spring-boot-app.service 的新服务文件。 2、将下面的配置内容复制到  spring-boot-app.service  文件中,并保存。 其中, username 是你要用来运行Spring Boot应用程序的用户名, /path/to/spring-boot-app.jar 是你的Spring Boot应用程序的路径。 3、重新加

    2024年02月06日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包