【linux】日志和journalctl 管理查看日志

目录

既看即用

简略介绍

linux的日志类型

系统日志

介绍

区别的简单说明

区别的详细说明

journalctl是什么?(查看系统日志的工具)

详细内容

linux的日志类型

systemd日志(systemd-journald) 放在哪个目录

/var/log/messages、/var/log/dmesg 日志和systemd-journald 日志有什么区别

journalctl 和dmesg、/var/log/messages 、/var/log/dmesg的关系是什么

journalctl 可以查看到/var/log/messages和/var/log/dmesg的内容吗

journalctl 不加--file=参数指定文件访问的是哪些日志文件


既看即用

系统日志的查看

journalctl -xe # -x 是目录(catalog)的意思,在报错的信息下会,附加解决问题的网址    -e  pager-end 从末尾开始看

从尾部开始看
journalctl -r # -r reverse ,加-r表示倒序从尾部看(推荐)

滚屏输出日志
journalctl -f -n 20;  # 和tail -f 一个性质

#查看指定时间的日志
journalctl --since="2017-10-30 18:10:30"
journalctl --since "20 min ago"
journalctl --since yesterday
journalctl --since "2017-01-10" --until "2017-01-11 03:00"
journalctl --since 09:00 --until "1 hour ago"

#只看内核日志(不显示应用日志)
journalctl -k

#查看系统本次启动的日志
journalctl -b
journalctl -b -0


#查看上一次启动的日志(需更改设置)
journalctl -b -1


某用户的日志
id root;
journalctl _UID=0 -n 5


#查看指定服务的日志
journalctl /usr/lib/systemd/systemd


#查看某个 Unit 的日志
journalctl -u nginx.service
journalctl -u httpd.service   # -u  service unit
:https://blog.csdn.net/enthan809882/article/details/104551777/

更多:https://www.cnblogs.com/askword/p/14506430.html

简略介绍

linux的日志类型

在 Linux 系统中,常见的日志类型包括:

1. **系统日志(System Logs)**:
   - `/var/log/messages` 或 `/var/log/syslog`:包含各种系统级别的日志信息,如内核消息、系统服务消息等。
   - `/var/log/auth.log`:记录与身份验证和授权相关的事件,如登录、认证失败等。
   - `/var/log/kern.log`:包含内核相关的日志信息,如内核模块加载、驱动程序事件等。

2. **应用程序日志(Application Logs)**:
   - `/var/log/<应用程序名>/`:许多应用程序会将自己的日志存储在以应用程序名称命名的目录下,例如 `/var/log/apache2/`、`/var/log/nginx/` 等。
   - `/var/log/mail.log`:邮件服务日志。
   - `/var/log/httpd/`:Apache Web 服务器的日志目录。
   - `/var/log/mysql/`:MySQL 数据库服务器的日志目录。

3. **安全日志(Security Logs)**:
   - `/var/log/auth.log`:记录了与身份验证和授权相关的安全事件。
   - `/var/log/secure`:记录了与安全相关的事件,如 SSH 登录、访问控制等。

4. **引导日志(Boot Logs)**:
   - `/var/log/dmesg`:记录了内核启动期间的消息,包括硬件检测和初始化信息。

5. **用户日志(User Logs)**:
   - `/var/log/wtmp`:记录了用户的登录和注销事件。
   - `/var/log/lastlog`:记录了每个用户最后一次登录的详细信息。

`systemd-journald` 日志属于系统日志(System Logs)的一部分。当 `systemd-journald` 服务在 Linux 系统上运行时,它负责收集和管理整个系统的日志信息,包括内核消息、系统服务和用户级别的日志。这些日志通过 `systemd-journald` 存储为二进制格式,并位于 `/var/log/journal/` 目录下。因此,`systemd-journald` 日志属于系统日志的一种。

系统日志

介绍

上面可知系统日志中最重要的是:

/var/log/messages (系统日志文件:组件的消息、警告、错误,记录更高级别的系统日志信息。包括系统服务的启动和停止信息、登录和权限问题、内核模块加载和卸载等信息。)

/var/log/dmesg (特殊的日志文件,保存了内核启动时和运行期间的相关信息。该文件记录了与硬件设备和内核驱动程序有关的信息)

区别的简单说明

journalctl 和 /var/log/messages的区别

journalctl 和 /var/log/messages 是 systemd 系统日志的不同访问方式。

`/var/log/messages` 和 `/var/log/dmesg` 是传统的日志文件,可以直接当作文件打开,也可以使用journalctl --file=/var/log/messages 打开。

而 `systemd-journald` 则是现代 Linux 系统中使用的日志记录服务,记录的日志是二进制文件,可以使用journalctl 工具查看。

dmesg 和 /var/log/dmesg区别

dmesg 和 /var/log/dmesg 主要关注内核和硬件信息的记录和查看,dmesg:直接显示内核环缓冲区的内容,即运行时的内核日志。dmesg /var/log/messages:将内核环缓冲区的内容导入到 /var/log/messages 文件中,使得接下来可以使用文件的方式查看内核日志。

区别的详细说明

在 Linux 系统中,/var/log/messages 和 /var/log/dmesg 是两个常见的日志文件,它们记录了系统运行时的不同类型的日志信息,但是它们的内容和用途有所不同。

1. /var/log/messages:这个日志文件包含了系统各个组件的消息、警告和错误日志。它记录了更高级别的日志,可以用于系统的故障排查和问题诊断。例如,系统服务的启动和停止信息、登录和权限问题、内核模块加载和卸载等信息都会被记录在这个文件中。

2. /var/log/dmesg:这个日志文件记录了内核启动时的详细信息。dmesg 是一个命令行工具,用于查看和控制内核环缓冲区的内容,而 /var/log/dmesg 则是将这些内核日志保存到文件中。该文件通常包含与硬件设备、驱动程序和内核相关的信息,例如设备初始化、硬件错误和内核模块加载等。

关于 dmesg 命令和 dmesg /var/log/messages 命令的区别:

- dmesg:这个命令直接显示内核环缓冲区的内容,即运行时的内核日志。它会输出最近发生的内核消息,用于检查系统的运行状态和故障排查。

- dmesg /var/log/messages:这个命令将内核环缓冲区的内容导入到 /var/log/messages 文件中,使得接下来可以使用文件的方式查看内核日志。这样做可以保留日志的历史记录,便于后续分析和查找。

总结起来,/var/log/messages 包含了更广泛的系统级别的日志信息,而 /var/log/dmesg 则更专注于内核和硬件相关的信息。使用 dmesg 命令可以直接查看内核环缓冲区的内容,而使用 dmesg /var/log/messages 命令可以将内核日志保存到文件中以供后续使用。

journalctl是什么?(查看系统日志的工具)

journalctl 是一个用于访问和管理 systemd 日志的命令行工具。systemd 是一个 Linux 系统的初始化系统和服务管理器,它负责启动和管理系统进程。

系统日志有

systemd 日志默认存储在 /var/log/journal/ 目录下,二进制文件

【linux】日志和journalctl 管理查看日志_第1张图片

通过使用 journalctl,您可以查看和分析系统日志,以便诊断和解决问题。它可以提供有关服务、进程、启动过程和系统事件的详细信息。

以下是一些常见的 journalctl 用法示例:

1. `journalctl`:显示所有可用日志条目,从最新的开始。
2. `journalctl -b`:显示当前引导过程的日志。
3. `journalctl -u service-name`:仅显示特定服务的日志条目。
4. `journalctl -p priority-level`:按优先级过滤日志条目,例如 `-p err` 只显示错误级别的日志。
5. `journalctl -f`:实时查看新的日志条目。
6. `journalctl --since "YYYY-MM-DD HH:MM:SS"`:仅显示指定时间之后的日志条目。
7. `journalctl --disk-usage`:显示日志存储占用情况。

这只是一些常见的用法示例,journalctl 提供了许多其他选项和过滤功能,以满足不同的需求。您可以使用 `man journalctl` 命令来获取更详细的文档和帮助信息。

journalctl -xe命令(系统日志查询)
 
journalctl -xe是什么意思
-xe是排查问题时最常用的参数:
-e 从结尾开始看
-x 相关目录(如:问题相关的网址)
 
journalctl -xe # -x 是目录(catalog)的意思,在报错的信息下会,附加解决问题的网址    -e  pager-end 从末尾开始看

结尾看日志,开头看日志
默认从开头,加-r表示倒序
 
journalctl -r # -r reverse 从尾部看(推荐)
journalctl # 从开头看(一般用不到,因为都是看最新的日志)

滚屏输出日志
journalctl -f -n 20;  # 

时间段的日志
journalctl --since "2020-01-01 20:00:00" --until "2020-02-01 20:15:00"

某用户的日志
id root;
journalctl _UID=0 -n 5

某个服务的日志
journalctl -u httpd.service   # -u  service unit
:https://blog.csdn.net/enthan809882/article/details/104551777/

详细内容

linux的日志类型

在 Linux 系统中,常见的日志类型包括:

1. **系统日志(System Logs)**:
   - `/var/log/messages` 或 `/var/log/syslog`:包含各种系统级别的日志信息,如内核消息、系统服务消息等。
   - `/var/log/auth.log`:记录与身份验证和授权相关的事件,如登录、认证失败等。
   - `/var/log/kern.log`:包含内核相关的日志信息,如内核模块加载、驱动程序事件等。

2. **应用程序日志(Application Logs)**:
   - `/var/log/<应用程序名>/`:许多应用程序会将自己的日志存储在以应用程序名称命名的目录下,例如 `/var/log/apache2/`、`/var/log/nginx/` 等。
   - `/var/log/mail.log`:邮件服务日志。
   - `/var/log/httpd/`:Apache Web 服务器的日志目录。
   - `/var/log/mysql/`:MySQL 数据库服务器的日志目录。

3. **安全日志(Security Logs)**:
   - `/var/log/auth.log`:记录了与身份验证和授权相关的安全事件。
   - `/var/log/secure`:记录了与安全相关的事件,如 SSH 登录、访问控制等。

4. **引导日志(Boot Logs)**:
   - `/var/log/dmesg`:记录了内核启动期间的消息,包括硬件检测和初始化信息。

5. **用户日志(User Logs)**:
   - `/var/log/wtmp`:记录了用户的登录和注销事件。
   - `/var/log/lastlog`:记录了每个用户最后一次登录的详细信息。

`systemd-journald` 日志属于系统日志(System Logs)的一部分。当 `systemd-journald` 服务在 Linux 系统上运行时,它负责收集和管理整个系统的日志信息,包括内核消息、系统服务和用户级别的日志。这些日志通过 `systemd-journald` 存储为二进制格式,并位于 `/var/log/journal/` 目录下。因此,`systemd-journald` 日志属于系统日志的一种。

systemd日志(systemd-journald) 放在哪个目录

systemd 日志默认存储在 `/var/log/journal/` 目录下。具体而言,系统的二进制日志文件存储在 `/var/log/journal/system.journal` 中。

在 `/var/log/journal/` 目录下,您还会找到其他文件和目录,包括:

- `system.journal~`:这是系统日志的旧版本备份文件,当系统进行日志轮转(log rotation)时,旧的 `system.journal` 文件会被重命名为此文件。

- `user` 目录:该目录包含每个用户的个人日志目录。每个用户的日志以其用户ID号命名,例如 `/var/log/journal/user/1000` 是用户ID为1000的用户的个人日志目录。

请注意,这些路径是默认设置,实际可能因为操作系统的配置和定制而有所不同。

【linux】日志和journalctl 管理查看日志_第2张图片

/var/log/messages、/var/log/dmesg 日志和systemd-journald 日志有什么区别

`/var/log/messages` 和 `/var/log/dmesg` 是传统的日志文件,而 `systemd-journald` 则是现代 Linux 系统中使用的日志记录服务。

区别如下:

1. **格式和存储方式**:

`/var/log/messages` 和 `/var/log/dmesg` 是文本文件,使用传统的 Syslog 格式记录日志。它们通常由 rsyslogd 等传统日志记录器处理。

而 `systemd-journald` 则使用二进制格式来存储日志,它将日志存储在 `/var/log/journal` 目录下的 `system.journal` 文件中。

2. **日志来源和内容**:

`/var/log/messages` 文件包含了各种系统服务和应用程序的日志信息,通常包括重要的系统级别日志。

而 `/var/log/dmesg` 文件包含了内核启动过程中的消息,提供了与硬件和内核交互的有关信息。 `systemd-journald` 服务收集了整个系统的日志信息,包括内核日志、系统服务和用户级别的日志。

3. **查询和分析工具**:

`/var/log/messages` 和 `/var/log/dmesg` 文件可以使用常见的文本处理工具(如grep、sed等)进行查询和分析。

而 `systemd-journald` 提供了专用的工具 `journalctl`,它允许您以更灵活和强大的方式查询和分析日志,包括可使用时间戳、服务名、日志级别和其他标准或自定义字段进行过滤和排序。

总之,`/var/log/messages` 和 `/var/log/dmesg` 是传统的文本日志文件,而 `systemd-journald` 是现代的二进制日志记录服务。与传统的日志文件相比,`systemd-journald` 提供了更强大、更灵活的日志管理和查询功能,同时还能够处理更多来源的日志信息。

journalctl 和dmesg、/var/log/messages 、/var/log/dmesg的关系是什么

journalctl、dmesg、/var/log/messages 和 /var/log/dmesg 是 Linux 系统中不同的日志记录和查看方式,它们之间有一定的关系和区别。

1. journalctl:它是一个用于访问和管理 systemd 日志的命令行工具。systemd 是现代 Linux 系统中常用的初始化系统和服务管理器。journalctl 可以访问和查询 systemd-journald 服务所管理的日志。它提供了更高级别的日志管理功能,可以查看系统和服务的详细日志,按照时间、服务、优先级等进行过滤和排序。

2. dmesg:它是一个用于显示和控制内核环缓冲区内容的命令行工具。它用于查看内核启动时的详细信息和运行时的内核消息。dmesg 命令直接访问内核环缓冲区,输出最近发生的内核消息。它主要用于检查硬件设备、驱动程序和内核相关的信息。

3. /var/log/messages:这是一个常见的系统日志文件,记录了各个组件的消息、警告和错误日志。它是传统 Syslog 协议的一部分,用于记录更高级别的系统日志信息。包括系统服务的启动和停止信息、登录和权限问题、内核模块加载和卸载等信息。这个文件通常由 Syslog 或类似的服务管理。

4. /var/log/dmesg:这是一个特殊的日志文件,保存了内核启动时和运行期间的相关信息。该文件记录了与硬件设备和内核驱动程序有关的信息,如设备初始化、硬件错误和内核模块加载等。它可以被视为 dmesg 命令的日志输出文件。

综上所述,journalctl 和 /var/log/messages 是 systemd 系统日志的不同访问方式,而 dmesg 和 /var/log/dmesg 则主要关注于内核和硬件信息的记录和查看。它们可以提供不同级别的日志,用于系统故障排查和问题诊断。

journalctl 可以查看到/var/log/messages和/var/log/dmesg的内容吗

是的,通过使用 journalctl 命令,您可以查看到 /var/log/messages 和 /var/log/dmesg 的内容。

journalctl 命令提供了一个统一的接口来访问系统的日志信息,包括 systemd-journald 日志、内核日志以及传统的 Syslog 日志。它能够检索并显示这些日志的信息。

默认情况下,journalctl 命令会显示当前系统的全部日志。要查看特定文件(如 /var/log/messages 和 /var/log/dmesg)的日志内容,您可以使用 `journalctl --file` 或 `-f` 选项,后面跟上文件的路径。例如:

```
journalctl --file=/var/log/messages
```

或者:

```
journalctl --file=/var/log/dmesg
```

这样,您将能够查看和检索指定文件的日志条目。

请注意,使用 journalctl 查看传统的 Syslog 文件时,需要确保已启用 rsyslog 服务和其对应的配置,以确保日志正确记录到 /var/log/messages 文件中。如果未启用 rsyslog,则可能无法显示相关的日志内容。

journalctl 不加--file=参数指定文件访问的是哪些日志文件

如果已经开启了rsyslog日志,但是日志不是记录在/var/log/messages文件中,而是记录在其他文件中如:/var/log/hw.log,那执行journalctl 不加--file=参数指定文件,能看到/var/log/hw.log内记录的日志吗

不加 `--file` 参数执行 `journalctl` 命令时,默认情况下会显示 systemd-journald 日志,而不会直接显示其他日志文件(如 /var/log/hw.log)中的内容。

`journalctl` 命令通过访问 systemd-journald 服务收集和管理的系统日志来提供日志的查看和查询功能。这些日志通常存储在 `/var/log/journal` 目录下。

要在 `journalctl` 中查看其他日志文件(如 /var/log/hw.log)中的内容,您可以使用 `--file` 参数,并指定文件的路径,例如:

```
journalctl --file=/var/log/hw.log
```

这样,您就可以查看并检索指定文件内记录的日志条目。

请确保已经启用 rsyslog 以正确记录日志到所指定的文件中。如果没有正确配置或启用 rsyslog 服务,`journalctl` 命令将无法访问和显示其他非 systemd-journald 日志。
 

你可能感兴趣的:(linux,运维,服务器)