如何在 Mac 上打开 systemd 日志文件

bag*_*nyi 2 linux mac systemd docker

我有一个从 Linux 机器复制过来的日志文件列表。如何在 Mac 上阅读这些内容?

system.journal
system@00057f81c3557a96-72d9555724020539.journal~
system@00057f81c3578ad2-0b1342e26a1084c2.journal~
system@00057f81c35da2ae-1e08ad8d9fb4490e.journal~
system@00057f81c36061ae-4887cabc406c0730.journal~
system@00057f81c3610f02-a2ef88fdd0f7b8b8.journal~
system@00057f81c361f8c9-291d730f905c8c13.journal~
system@00057f81c3622e0e-e11a80ce27e19d78.journal~
system@000581375327165b-1ebd65852c52012b.journal~
system@000581414f1d5717-3fb84669d371cc85.journal~
system@000581414f1eb991-d03234bfd7e97526.journal~
Run Code Online (Sandbox Code Playgroud)

bag*_*nyi 5

用于查看日志文件 ( journalctl)的工具仅适用于Linux,因此您需要使用虚拟化。

Docker可能是完成这项工作的最简单的工具。

下载并安装 Docker Desktop 并注册一个 Docker Hub 帐户。

打开终端并执行以下操作:

$ docker pull centos/systemd
Run Code Online (Sandbox Code Playgroud)

centos/systemd将从 Docker Registry拉取镜像。(您只需要运行一次)

现在您已准备好在journalctl基于此映像的容器内运行。

cd 进入您拥有日志文件的目录并运行:

$ docker run -v "$(pwd):/tmp/journal" --rm centos/systemd journalctl --directory="/tmp/journal" --no-pager > journal.log 
Run Code Online (Sandbox Code Playgroud)

(您可能会被要求登录到您的 docker hub 帐户,如果是这样,请先运行docker login

这将执行以下操作:

  1. 共享容器内的当前目录 ( /tmp/journal)
  2. 运行journalctl并告诉它连接来自 的所有日志文件/tmp/journal,并将结果打印到屏幕上
  3. 将输出重定向到一个名为 journal.log

现在您可以使用less(甚至更好,lnavjournal.log在您的 Mac 上打开:

$ less journal.log
Run Code Online (Sandbox Code Playgroud)