>  기사  >  운영 및 유지보수  >  Journalctl을 사용하여 시스템 로그를 보고 분석하는 방법(예제 포함)

Journalctl을 사용하여 시스템 로그를 보고 분석하는 방법(예제 포함)

PHPz
PHPz앞으로
2023-06-10 08:55:492135검색

如何使用 journalctl 查看和分析 systemd 日志(附实例)

소개

많은 사람들이 systemd가 좋지 않다고 말하며 시스템에 큰 영향을 미친다고 합니다. 그러나 시스템을 관리하고 문제를 해결하는 데 필요한 완전한 도구 세트를 제공한다는 사실은 부인할 수 없습니다. GUI가 없는 손상된 시스템을 발견했을 때 부팅과 GRUB가 엉망이 될 수 있다고 상상해 보십시오. 이 경우 라이브 시스템에서 부팅하고 Linux 파티션을 마운트한 다음 시스템 로그를 탐색하여 문제를 찾을 수 있습니다.

systemd에는 다음과 같은 세 가지 기본 구성 요소가 있습니다:

  • ​systemd​​: Linux 운영 체제의 시스템 및 서비스 관리자.
  • ​systemd​​:Linux 操作系统的系统和服务管理器。
  • ​systemctl​​ :该命令用于反观和控制 systemd 系统和服务管理器的状态。
  • ​systemd-analyze​​:该命令提供系统启动时的性能统计,并从系统和服务管理器中检索其他状态和跟踪信息。

除了这三个服务外,systemd 还提供其他服务,如 journald、logind、networkd 等。在本指南中,我们将讨论 systemd 的 journald 服务。

journald - systemd 日志服务

根据设计,systemd 提供了一个集中的方式来处理所有来自进程、应用程序等的操作系统日志。所有这些日志事件都由 systemd 的 journald 守护进程来处理。journald 守护进程收集所有来自 Linux 操作系统各处的日志,并将其作为二进制数据存储在文件中。

以二进制数据集中记录事件、系统问题的好处有很多。例如,由于系统日志是以二进制而不是文本形式存储的,你可以以文本、JSON 对象等多种方式进行转译,以满足各种需求。另外,由于日志是按顺序存储的,通过对日志的日期/时间操作,超级容易追踪到单个事件。

请记住,journald 收集的日志文件数以千行计,而且不断更新每次开机、每个事件。因此,如果你有一个长期运行的 Linux 操作系统,日志的大小应该以 GB 为单位。由于有着数以千计的日志,最好用基本命令进行过滤,以了解更多系统问题。

journald 配置文件

journald 的配置文件存在于以下路径中。它包含了关于如何进行日志记录的各种标志。你可以看一下这个文件,并进行必要的修改。但我建议不要修改这个文件,除非你知道自己在做什么。

/etc/systemd/journald.conf

journald 存储二进制日志文件的地方

journald 以二进制格式存储日志。它们被保存在这个路径下的一个目录中:

/var/log/journal

例如,在下面的路径中,有一个目录包含了迄今为止的所有系统日志。

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl log file path

不要使用 ​​cat​​ 命令,也不要使用 ​​nano​​ 或 ​​vi​​systemctl​​: 이 명령은 시스템 시스템과 서비스 관리자의 상태를 검토하고 제어하는 ​​데 사용됩니다.

​systemd-analyze​​: 이 명령은 시스템 시작에 대한 성능 통계를 제공하고 시스템 및 서비스 관리자에서 추가 상태 및 추적 정보를 검색합니다.

이 세 가지 서비스 외에도 systemd는 저널링, 로그인, 네트워크 등과 같은 다른 서비스도 제공합니다. 이 가이드에서는 systemd의 저널드 서비스에 대해 설명합니다.

journald - systemd 저널 서비스

설계상 systemd는 프로세스, 애플리케이션 등의 모든 운영 체제 로그를 처리하는 중앙 집중식 방법을 제공합니다. 이러한 모든 로그 이벤트는 systemd의 저널 데몬에 의해 처리됩니다. Journald 데몬은 Linux 운영 체제 전체에서 모든 로그를 수집하여 파일에 바이너리 데이터로 저장합니다.

이진 데이터에 이벤트와 시스템 문제를 중앙에서 기록하면 많은 이점이 있습니다. 예를 들어 시스템 로그는 텍스트 형식이 아닌 바이너리 형식으로 저장되기 때문에 다양한 요구 사항에 맞게 텍스트, JSON 개체 등으로 번역할 수 있습니다. 또한, 로그가 순차적으로 저장되기 때문에 로그의 날짜/시간 조작을 통해 개별 이벤트를 추적하는 것이 매우 쉽습니다. 如何使用 journalctl 查看和分析 systemd 日志(附实例)

journald에서 수집한 로그 파일은 수천 줄로 구성되어 있으며 부팅할 때마다, 이벤트할 때마다 지속적으로 업데이트된다는 점을 기억하세요. 따라서 장기 실행 Linux 운영 체제를 사용하는 경우 로그 크기는 GB 단위여야 합니다. 수천 개의 로그가 있으므로 기본 명령으로 필터링하여 시스템 문제에 대해 자세히 알아보는 것이 가장 좋습니다.

journald 구성 파일

journald의 구성 파일은 다음 경로에 존재합니다. 여기에는 로깅 수행 방법에 대한 다양한 플래그가 포함되어 있습니다. 이 파일을 살펴보고 필요한 사항을 변경할 수 있습니다. 그러나 당신이 무엇을 하고 있는지 알지 못한다면 이 파일을 수정하지 않는 것이 좋습니다. 🎜
journalctl
🎜journald 바이너리 로그 파일이 저장되는 위치 🎜🎜journald는 로그를 바이너리 형식으로 저장합니다. 🎜
journalctl --utc
🎜 경로 아래의 디렉터리에 저장됩니다. 예를 들어 아래 경로에는 지금까지의 모든 시스템 로그가 포함된 디렉터리가 있습니다. 🎜🎜journalctl을 사용하여 시스템 로그를 보고 분석하는 방법(예제 포함)🎜 🎜🎜journalctl 로그 파일 경로🎜🎜🎜사용하지 마세요 ​​cat​​ 명령, 사용하지 않음 ​​nano​​ 또는 ​​vi​​ 이 파일을 엽니다. (바이너리이므로) 정상적으로 표시할 수 없습니다. 🎜🎜journalctl을 사용하여 시스템 로그 보기 및 분석🎜🎜journald 기본 명령🎜🎜journald 로그를 보기 위한 기본 명령은 다음과 같습니다. 🎜
journalctl -p 0
🎜🎜🎜🎜🎜journalctl🎜🎜

该命令提供了所有应用程序和进程的日志条目,包括错误、警告等。它显示的列表中,最旧的日志在顶部,当前的日志在底部。你需要不断按回车键来逐行滚动浏览。你也可以使用 ​​PAGE UP​​ 和 ​​PAGE DOWN​​ 键来滚动。按 ​​q​​ 键可以退出这个视图。

如何以不同时区的时间查看日志条目

默认情况下,​​journalctl​​ 以当前系统时区显示日志的时间。然而,你可以很容易地在命令中提供时区,将同一日志转换为不同的时区。例如,要以 UTC 查看日志,请使用以下命令:

journalctl --utc

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl --utc

如何在日志中只查看错误、警告等信息

系统产生的日志有不同的优先级。有些日志可能是可以忽略的警告,有些可能是重要的错误。你可能想只看错误,不看警告。这也可以用下面的命令来实现。

要查看紧急系统信息,请使用:

journalctl -p 0

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl -p 0

错误代码:

0: 紧急情况
1: 警报
2: 危急
3: 错误
4: 警告
5: 通知
6: 信息
7:调试

当你指定错误代码时,它显示该等级及更高的所有信息。例如,如果你指定下面的命令,它会显示所有优先级为 2、1 和 0 的信息:

journalctl -p 2

如何查看特定启动的日志

当你运行 ​​journalctl​​ 命令时,它会显示当前启动的信息,即你正在运行的会话中的信息。但也可以查看过去的启动信息。

在每次重启时,日志都会持续更新。journald 会记录不同启动时的日志。要查看不同启动时的日志,请使用以下命令。

journalctl --list-boots

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl list-boots

  • 第一个数字显示的是 journald 的唯一的启动跟踪号码,你可以在下一个命令中使用它来分析该特定的启动。
  • 第二个数字是启动 ID,你也可以在命令中指定。
  • 接下来的两个日期、时间组合是存储在相应文件中的日志的时间。如果你想找出某个特定日期、时间的日志或错误,这就非常方便了。

要查看一个特定的启动号码,你可以选择第一个启动跟踪号码或启动 ID,如下所示。

journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl -b 45

你也可以使用 ​​-x​​ 选项,在显示屏上添加 systemd 错误信息的解释。在某些情况下,这是个救命稻草。

journalctl -xb -p 3

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl -xb

如何查看某一特定时间、日期的日志记录

​journalctl​​ 功能强大,可以在命令中提供类似英语的参数,用于时间和日期操作。

你可以使用 ​​--since​​ 选项与 ​​yesterday​​、​​today​​、​​tomorrow​​ 或 ​​now​​ 组合。

下面是一些不同命令的例子。你可以根据你的需要修改它们。它们是不言自明的。以下命令中的日期、时间格式为 ​​"YYYY-MM-DD HH:MM:SS"​

journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl --since 09:00 --until

你也可以将上述内容与错误级别开关结合起来。

如何查看内核特定的日志记录

Linux 内核信息也可以从日志中提取出来。要查看当前启动时的内核信息,请使用以下命令:

journalctl -k

如何查看某个服务、PID 的日志

你可以从 journald 日志中过滤出某个 systemd 服务单元的特定日志。例如,如果要查看 NetworkManager 服务的日志,请使用下面的命令。

journalctl -u NetworkManager.service

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl NetworkManager service

如果你不知道服务名称,可以使用下面的命令来列出系统中的 systemd 服务。

systemctl list-units --type=service

如何查看用户、组的日志

如果你正在分析服务器日志,在多个用户登录的情况下,这个命令很有帮助。你可以先用下面的命令从用户名中找出用户的 ID。例如,要找出用户 ​​debugpoint​​ 的 ID:

id -u debugpoint

然后使用 ​​_UID​​ 选项指定该 ID 与来查看该用户产生的日志。

journalctl _UID=1000 --since today

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl _UID

同样地,使用 ​​_GID​​ 选项也可以查到用户组的情况。

如何查看一个可执行文件的日志

你也可以查看某个特定程序或可执行文件的日志。例如,如果你想找出 ​​gnome-shell​​ 的信息,你可以运行以下命令。

journalctl /usr/bin/gnome-shell --since today

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl gnome-shell

결론

이 가이드가 ​​journalctl​​를 사용하여 Linux 데스크톱 또는 서버에서 시스템 로그를 보고 분석하고 문제를 해결하는 데 도움이 되기를 바랍니다. 이러한 명령을 사용하는 방법을 알고 있다면 systemd 로그 관리는 매우 강력하며 디버깅 시 작업을 더 쉽게 만들어줄 수 있습니다. 이제 모든 주요 Linux 배포판은 systemd를 사용합니다. Ubuntu, Debian, Fedora 및 Arch는 모두 systemd를 기본 운영 체제 구성 요소로 사용합니다. systemd를 사용하지 않는 Linux 배포판에 대해 알고 싶다면 ​​MX-Linux​​, Gentoo, Slackware, Void Linux를 살펴보는 것이 좋습니다.

위 내용은 Journalctl을 사용하여 시스템 로그를 보고 분석하는 방법(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제