什么是journald
journald是systemd的守护程序,该守护程序从各种日志源(例如syslog)收集日志。
journalctl是使您可以与日记日志进行交互的命令行工具。
使用journalctl,您可以读取日志,实时监视日志,根据时间,服务,严重性和其他参数过滤日志。
在本教程中,我将向您展示如何使用journalctl来读取,监视和分析Linux中的日志。
检查系统上是否启用了日志日志
某些Linux发行版,特别是台式机发行版,默认情况下不启用日记日志。
日记日志的默认位置是/var/log/journal
目录。您应该确保该目录存在。如果没有,请自行创建。
接下来,在/etc/systemd/journald.conf文件中,确保将值Storage
设置为auto
或persistent
。
journalctl命令查看日志使用指南
键 | 描述 |
箭头 | 上移一行 |
空格 | 下移一页 |
b | 向上移动一页 |
g | 转到第一行 |
G | 转到最后一行 |
100g | 转到第100行 |
/string | 从当前位置搜索字符串 |
n/N | 转到下一个或上一个搜索匹配项 |
q | 退出日志 |
如果您不希望日志以不太相似的查看模式显示,则可以使用该--no-pager
标志。这将直接在屏幕上显示整个日志。
journalctl使用
以相反的时间顺序显示日志
如您所见,日志按时间顺序显示。这意味着将首先显示最早的存储日志。
如果要首先查看最近的日志,可以使用以下选项以相反的顺序显示日记日志-r
:
journalctl -r
它仍然使用较少的命令,例如view。因此,按q
退出日志查看模式。
仅显示最近的N行日记日志
除了显示所有日志,您还可以选择使用该-n
选项从日志中仅显示一定数量的行。
例如,以下命令将显示日志的最新25行:
journalctl -n 25
实时显示日记日志
查看最近的日志是一回事,如果要实时查看日志,可以使用-f
journalctl命令的选项:
journalctl -f
就像tail命令的-f选项一样,这将在关注模式下实时显示日志。
使用Ctrl + C命令退出实时视图。
显示UTC时间的日志
默认情况下,日志日志显示在系统的本地时间。如果系统时间设置为UTC以外的时间,并且您想查看UTC中的日志,则可以使用该--utc
标志来进行。
journalctl --utc
仅显示带有-k的内核消息
系统日志会累积来自不同来源的日志。如果只想查看Linux内核日志,则可以使用选项-k
。
journalctl -k
提示:使用sudo查看所有日记日志
Systemd保护将哪种日志显示给哪个用户。
如果您是普通用户,它可能会显示一些日志,但不会显示所有日志:
abhishek@linuxhandbook:~$ journalctl -u ssh
Hint: You are currently not seeing messages from other users and the system.
Users in groups 'adm', 'systemd-journal' can see all messages.
Pass -q to turn off this notice.
-- Logs begin at Mon 2020-06-22 12:05:47 UTC, end at Tue 2020-07-14 11:59:29 UTC. --
-- No entries --
如果要访问所有日志,则如果您是sudo用户,则应使用sudo :
sudo journalctl -u ssh
显示来自特定引导会话的消息
这是jounrald的一项出色功能。journalctl命令允许您使用选项访问属于特定引导会话的日志-b
。
您可以列出所有带有--list-boots
标志的引导会话。
journalctl --list-boots
输出将显示启动会话以及启动时间和分配给启动会话的整数:
-5 513008ead8464c23aab732a2feed5277 Sun 2020-07-12 20:43:38 IST—Sun 2020-07-12 22:40:02 IST
-4 caff16e3f46a4479b5287fb9e294f610 Mon 2020-07-13 07:36:04 IST—Mon 2020-07-13 19:13:44 IST
-3 5665f41cc50a4dec9955efacc2596d68 Mon 2020-07-13 20:30:55 IST—Mon 2020-07-13 22:20:34 IST
-2 c7d17407b0bd476a930af503f64b6006 Tue 2020-07-14 07:58:41 IST—Tue 2020-07-14 18:50:04 IST
-1 7ab5e04518ec455abe0e2c86fdaa46fa Tue 2020-07-14 21:19:27 IST—Tue 2020-07-14 22:42:11 IST
0 91856e86d4ee4e828717913deb288568 Wed 2020-07-15 08:11:51 IST—Wed 2020-07-15 17:14:10 IST
引导会话0是当前的引导会话。引导会话-1是最后引导的会话,依此类推。
journalctl -b -2
想象一下在旧的syslog系统中尝试这样做!
您不仅会像看到的那样获得启动日志/var/log/boot.log
。但是,如果您处于引导会话视图中,则引导日志始终位于日志的开头。
筛选特定systemd服务的日记日志
筛选是日记日志的重点。您可以基于systemd服务过滤日志。
journalctl -u service_name
例如,如果要查看由SSH生成的日志,可以按以下方式使用它:
journalctl -u ssh
您当然需要知道systemd服务名称。
过滤特定时间间隔的日志
这是日记日志的字符串过滤功能的另一个示例。您可以过滤特定时间段的日志,并且有多种方法可以执行此操作。
您可以使用自然语言来过滤日志。可以识别昨天,今天和明天等术语。
journalctl --since=yesterday --until=now
您还可以指定日期或日期时间组合:
journalctl --since "2020-07-10"
您还可以使用日期和时间指定时间段:
journalctl --since "2020-07-10 15:10:00" --until "2020-07-12"
时间从00:00:00开始,它确定日期和日期。
您还可以使用-1h20min之类的相对时间来指定过去1小时20分钟。
根据UID,GID和PID过滤日志
如果要调试问题,则可能要使用其PID检查特定进程的日志。
还可以根据用户ID(UID),组ID(GID)和进程ID(PID)过滤日记日志。下面是一个示例:
journalctl _PID=1234
提示:组合多个选项可查看更多量身定制的日志
您可以组合多个选项来查看所需的日志。
例如,如果您只想查看UTC时间戳中昨天的SSH日志,则可以使用:
sudo journalctl -u ssh --since=yesterday --utc
另一个常见用法是根据启动会话过滤日志。如果只想在当前会话中查看SSH日志,则可以使用:
sudo journalctl -u ssh -b0
可能性是无限的,您可以根据需要组合选项。
使用journalctl -xe查看最后几条日志
您会经常发现有人建议使用journalctl -xe
命令。
-
-e
:跳到日记日志的末尾 -
-x
:显示有关日志条目的更多信息(如果有)
某些日志条目具有其他信息,这些信息不会在正常日志查看中显示。使用该-x
选项可能会显示此类信息。
您看到的像这样的一行:
Jul 09 16:33:40 itsfoss systemd[1]: Started Run anacron jobs.
它可能显示更多信息,如下所示:
Jul 09 16:33:40 itsfoss systemd[1]: Started Run anacron jobs.
-- Subject: A start job for unit anacron.service has finished successfully
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit anacron.service has finished successfully.
--
-- The job identifier is 3702.
附加信息有助于说明错误或日志事件的上下文以及可能的解决方案。
仅显示带有journalctl的日志中的错误
要显示当前会话中的所有错误,可以使用:
journalctl -p 3 -xb
- -p 3:过滤优先级3的日志(这是错误的)
- -x:在日志上提供其他信息(如果有)
- b:自上次引导以来(当前会话)
您还可以使用其他优先级来获取调试,警告或关键级别的日志。下表列出了所有优先级。
您还可以使用其他优先级来获取调试,警告或关键级别的日志。下表列出了所有优先级。
优先 | 码 |
0 | 能源 |
1 | 警报 |
2 | 暴击 |
3 | 呃 |
4 | 警告 |
5 | 注意 |
6 | 信息 |
7 | 调试 |
您还可以显示一系列严重性的日志。例如,如果您想查看当前会话中的所有警告,通知和信息日志,则可以使用:
journalctl -p 4..6 -b0
您也可以warning..info
在上述命令中使用代替4..6
。
检查占用了多少磁盘空间日志
日志记录从各种来源收集日志,并存储各种级别的日志,包括调试日志。相信我,尽管保留日志有助于分析和审核,但它们会占用大量磁盘空间。
您可以使用此journalctl命令检查日志日志占用了多少磁盘空间:
journalctl --disk-usage
输出:
abhishek@linuxhandbook:~$ journalctl --disk-usage
Archived and active journals take up 2.8G in the file system.
以上输出的意思是:归档和活动日志在文件系统中占用2.8G。可以在本站搜索“如何清除Linux的系统日志”
标签:07,--,linux,journalctl,会话,2020,使用,日志 From: https://blog.51cto.com/wyf1226/5967107