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

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

目录

既看即用

简略介绍

linux的日志类型

区别的简单说明

区别的详细说明

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

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 -h` 的输出


既看即用

CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)

常用命令

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

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

滚屏输出日志

journalctl -f
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

#合并显示多个 Unit 的日志

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

:https://blog.csdn.net/enthan809882/article/details/104551777/

#只看标记为bash的日志
journalctl -t bash
journalctl查看日志,linux,运维,服务器

查看进程的日志

#通过进程名
journalctl -t <进程名称>

#通过进程ID

journalctl -f _PID=2121462

journalctl查看日志,linux,运维,服务器


查看http的日志
journalctl -thttpd
配合grep 过滤
journalctl |grep -E 'bash\[|\bsh\['

#查看指定优先级(及其以上级别)的日志,共有8级

0: emerg

1: alert

2: crit

3: err

4: warning

5: notice

6: info

7: debug

journalctl -p err -b2

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

journalctl --no-pager

#日志管理journalctl

#以 JSON 格式(单行)输出

journalctl -b -u nginx.service -o json

#以 JSON 格式(多行)输出,可读性更好

journalctl -b -u nginx.serviceqq -o json-pretty

空间管理

清空 /var/log/journal 文件的方法:https://www.jianshu.com/p/a30648913fe0

#显示日志占据的硬盘空间

journalctl --disk-usage

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

journalctl --vacuum-size=1G

journalctl --vacuum-size=500M

#指定日志文件保存多久

journalctl --vacuum-time=1years   #只保留近一年的日志
journalctl --vacuum-time=1w  #只保留近一周的日志

journalctl --vacuum-time=2d  #只保留近2天的日志

如果要手工删除日志文件,则在删除前需要先轮转一次journal日志
systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service
要启用日志限制持久化配置,可以修改 /etc/systemd/journald.conf
SystemMaxUse=16M
ForwardToSyslog=no
然后重启
systemctl restart systemd-journald.service
检查journal是否运行正常以及日志文件是否完整无损坏
journalctl --verify

日志的配置文件

/etc/systemd/journald.conf

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

简略介绍

linux的日志类型

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

  • /var/log/messages 系统启动后的信息和错误日志,几乎所有的开机系统发生的错误都会在此记录;(系统日志文件:组件的消息、警告、错误,记录更高级别的系统日志信息。包括系统服务的启动和停止信息、登录和权限问题、内核模块加载和卸载等信息。)
  • /var/log/secure 与安全相关的日志信息
  • /var/log/maillog 与邮件相关的日志信息
  • /var/log/cron 与定时任务相关的日志信息
  • /var/log/spooler 与UUCP和news设备相关的日志信息
  • /var/log/boot.log 记录一些开机或者关机启动的一些服务显示的启动或者关闭的信息;
  • /var/log/dmesg (特殊的日志文件,保存了内核启动时和运行期间的相关信息。该文件记录了与硬件设备和内核驱动程序有关的信息)

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

区别的简单说明

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 文件中,使得接下来可以使用文件的方式查看内核日志。

`journalctl -t` 和 `journalctl -u`的区别

`journalctl -t` 和 `journalctl -u` 是两个不同的选项,用于根据不同的条件过滤和显示系统日志。

1. `journalctl -t <程序名称>`:

   - `-t` 选项允许根据程序的标识符(即程序名称)进行过滤。

   - 该选项会仅显示与指定程序名称相关联的日志条目。

   - 例如,`journalctl -t MyApp` 将只显示与标识符为 "MyApp" 的程序相关的日志。

2. `journalctl -u <单元名称>`:

   - `-u` 选项允许根据单元(unit)的名称进行过滤。

   - 单元是与 systemd 服务或其他系统组件相关联的系统管理单元。

   - 该选项会仅显示与指定单元名称相关联的日志条目。

   - 例如,`journalctl -u sshd` 将只显示与 `sshd` 服务相关的日志。

所以, `journalctl -t` 是根据程序名称进行过滤的,而 `journalctl -u` 是根据单元名称进行过滤的。根据具体的需求选择适当的选项来过滤并查看相关的系统日志。

区别的详细说明

在 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/ 目录下,二进制文件

journalctl查看日志,linux,运维,服务器

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

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的用户的个人日志目录。

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

journalctl查看日志,linux,运维,服务器

/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 日志。
 

`journalctl -h` 的输出

```

journalctl [选项…] [过滤表达式]

查看 systemd 日志。

选项:

  -h --help                       显示此帮助信息并退出

     --version                    显示软件包版本信息

  -a --all                        显示所有可用的日志数据

  -b --boot[=ID|±N]               显示引导 ID 或相对偏移引导的日志数据

  -k --dmesg                      显示内核日志

  -c --cursor=CURSOR              使用指定的游标开始读取日志数据

  -u --unit=UNIT                  仅显示与单元/服务名称匹配的日志

                                    此选项可多次使用

  -g --grep=EXPR                  搜索日志数据中匹配的表达式

     --quiet                      减少冗长的输出

     --no-pager                   不要使用分页器

     --no-tail                    不要 `tail -f` 跟踪新的日志条目

     --output=FORMAT              设置日志输出格式

     --verify                     验证日志数据文件的完整性

     --vacuum                      清理/压缩日志存档

     --disk-usage                  显示磁盘使用情况

  -D --directory=DIRECTORY        设置日志数据文件存储目录

  -F --field=FIELD                仅显示具有指定字段的日志数据

  -n --lines[=INTEGER]            设置要显示的日志行数

  -r --reverse                    反向显示日志条目

  -e --pager-end                  加载日志的末尾并定位到最新条目

  -o --output-fields=FIELDS       设置要显示的字段列表

  -f --follow                     跟踪日志文件的变化

  -t --identifier=SYSLOG_IDENTIFIER

                                  仅显示包含给定标识符的日志条目

  -p --priority=LEVEL             仅显示具有指定优先级的日志条目

  -S --since[=TIMESTAMP]          显示在指定时间戳之后的日志

  -U --until=TIMESTAMP            显示在指定时间戳之前的日志

     --since-cursor=CURSOR        显示在指定游标之后的日志

     --until-cursor=CURSOR        显示在指定游标之前的日志

  -M --machine=CONTAINER          仅显示与给定容器匹配的日志

  -N --not                         在结果中反转条件

  -r --system                     显示系统日志

  -r --user[=USER]                 显示用户日志

  -w --wall                       当前 tty 上显示新的内核消息

     --new-mode                    在有新日志时进入新模式

     --no-rate-limit              无条件显示所有日志数据

     --no-pager-limit             显示所有条目,不受分页器限制

     --no-full                    不要进行完整性检查

     --quiet                        不要显示所有条目的详细信息

     --no-pager-quiet              禁用详细信息的分页输出

     --verify-key=keyid/subdesc    验证已签名的日志数据文件的签名

  -b --since-boot[=SPAN]          在最近的引导过程中显示日志

     --interval=INTERVAL          设置日志捕获的间隔

     --reverse                      反向按时间顺序显示

     --no-hostname                 不要打印主机名

     --no-full-field               不要打印字段描述符

     --no-header-field             不要打印消息头字段

     --output-fields-width=WIDTH   设置字段输出宽度的最佳规则

过滤表达式:

  过滤表达式可以基于日志数据属性(例如,单元)或字段(例如,MESSAGE)进行搜索。

  过滤表达式使用方括号 `[` 和 `]` 包围,并支持下列操作:

    =,  !=

    <, <=文章来源地址https://www.toymoban.com/news/detail-765760.html

到了这里,关于【linux】日志和journalctl 管理查看日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(97)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(93)
  • Linux 常用操作命令(CentOS 7.0)- 故障定位:服务器负载、进程管理、日志分析

    系统经研发测试上线后,如果运行期间出现了BUG,需要对服务故障进行定位,一般会查看服务器负载、服务状态、进程管理、服务日志等。 本文以CentOS 7.0 操作系统上的命令操作作为示例进行记录。 #服务器负载 完整参见:http://www.laobingbiji.com/note/detail.html?note_id=20231115154337

    2024年01月17日
    浏览(69)
  • 【个人笔记】Linux查询系统日志的命令journalctl

    从2012年开始,大部分linux发行版本开始从传统的systemv 初始化系统移植到一个叫做systemd的全新系统。systemd用来启动系统并管理进程。systemd包含了一个叫做journalctl的辅助组件,其主要作用是管理系统的事件日志记录。 journalctl可以查看所有的系统日志文件,由于日志信息量很

    2024年02月15日
    浏览(45)
  • 运维记录 会产生无用日志的服务器

    创建linux定时任务 crontab -e cron表达式 文件名.sh 查看linux定时任务 crontab -l 确认创建完成后重启cron service crond restart

    2024年04月11日
    浏览(46)
  • K8S查看服务器日志

    现在越来越多的服务通过K8S进行部署,所以这里简单记录下在我们日常工作中,使用k8s进行查看服务器的相关日志命令。 首先需要使用账号密码进入到服务器中 第一个命令 kubetctl get pod -A 这个是查看所有的服务信息 其中NAMESPACE是命名空间,name则是你服务节点的名称,注意,

    2024年02月12日
    浏览(45)
  • 查看服务器/IIS日志、log、访问信息基本方法

    IIS的错误日志通常位于特定的文件夹中,记录了服务器上发生的错误和异常。这些日志可以提供有关网站或应用程序出现问题的详细信息。默认情况下,IIS错误日志存储在以下路径: C:inetpublogsLogFiles 在这个目录下,可以找到以 u_errYYMMDD 的格式命名的错误日志文件,其中

    2024年02月09日
    浏览(47)
  • 阿里云国际版查看云服务器ecs实例系统日志和截图-Unirech

    阿里云国际版云服务器ecs是一个基于云的虚拟化服务,无法接入显示设备或手动截屏,但是云服务器ecs缓存了最后一次启动、重启或关闭时的系统日志,并支持实时捕获实例屏幕截图。用户则可以使用这些功能来分析和排除实例故障,例如诊断无响应的操作系统、异常重启或

    2024年02月09日
    浏览(58)
  • 阿里云——云服务器基础运维与管理

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 写在前面 学习目标: 一.3个理由拥抱云服务器 1.什么是云服务器  2.使用云服务的好处 3.推荐云服务的理由 二.1分钟快速定

    2024年02月16日
    浏览(51)
  • 远程管理服务器 用户组创建 1(运维笔记)

    修改跳板机名称: 修改跳板机网络模式为仅主机模式,ssh连接 假设有三个开发人员: 为三个开发人员设置密码: 创建相应的目录,给开发人员使用: 查看开发人员属组: 创建一个组: 添加用户附加组 查看组信息 赋予权限,更改目录权限: 冒险位(setuid):4000针对一些命令,临

    2023年04月13日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包