学习笔记098——Linux系统中journalctl命令使用指南

飞书CLI实战指南:办公自动化从命令行开始 命令行工具(CLI)是现代办公自动化的底层基础设施,其核心价值在于将重复性操作封装为可复用、可调度的指令。飞书CLI并非简单封装API,而是基于业务意图构建分层能力体系——底层统一鉴权与错误处理,中层按场景聚合多接口调用,上层支持插件扩展AI与私有系统。这种设计显著降低使用门槛,使非技术用户也能快速上手,同时保障企业级安全与稳定性。典型应用场景包括多维表格批量同步、项目状态自动周报、HR入职数据定时更新等。本文聚焦飞书CLI的实战落地路径,涵盖安装选型、鉴权配置、权限校验、脚本编写与自动化调度等关键环节。 阅读详情

Linux 日志神器 journalctl 完全指南

适用环境:CentOS 7+、RHEL 7+、Ubuntu 16.04+、Debian 8+ 等基于 systemd 的发行版

在现代 Linux 中,systemd 统一管理系统与服务,配套的 journalctl 负责集中查看日志。
不必再分别翻 /var/log/messages、/var/log/secure、各业务目录下的零散文本日志,用一套命令即可按服务、时间、级别精准排查。


一、journalctl 是什么?

1.1 工作原理

  • journalctl 是 systemd 的日志查看前端。
  • 日志写入 /var/log/journal/(持久化开启时),为结构化二进制,带服务名、PID、UID、级别、时间戳等元数据。
  • 比纯文本 grep 更适合按维度过滤、按开机批次回溯。

1.2 核心优势

能力说明
统一管理系统、内核、systemd 服务、多数守护进程日志一处查看
精准过滤按服务、时间、级别、进程、用户筛选
开机回溯可查本次/上次开机日志,排查启动失败
实时监控类似 tail -f
容量可控可限制占用、按时间/大小清理,避免打满磁盘

1.3 和传统日志的关系

方式典型路径适用
journalctl/var/log/journal/systemd 服务、系统级排查首选
传统文本/var/log/messages、nginx/access.log 等应用自己写文件的业务日志仍要看应用目录

说明: Nginx/Java 若配置了独立 access/error 文件,仍要看对应文件;journalctl -u nginx 主要看 systemd 托管该服务时 打到 journal 的内容。


二、基础用法

2.1 查看全部日志

journalctl

默认分页:

  • 空格:翻页
  • 回车:下一行
  • q:退出
  • 不想分页:加 --no-pager

2.2 倒序(最新在前)

journalctl -r

2.3 最近 N 行

journalctl -n          # 默认约 10 行
journalctl -n 100      # 最近 100 行

2.4 实时跟踪(高频)

journalctl -f
journalctl -u your-app.service -f

三、精准过滤(生产必备)

3.1 按服务(最常用)

# 指定 unit
journalctl -u nginx.service
journalctl -u sshd.service -f

# 多个服务
journalctl -u nginx -u mysql

# 先看状态,再查日志
systemctl status nginx.service
journalctl -u nginx.service -n 200 -p err

服务名以 systemctl list-units --type=service 为准,大小写与名称要准确。

3.2 按时间

journalctl --since today
journalctl --since "1 hour ago"
journalctl --since yesterday --until today
journalctl --since "2026-09-01 10:00:00" --until "2026-09-01 12:00:00"

也可使用相对写法,例如:--since "2 days ago"。

3.3 按级别

优先级从低到高:

debug < info < notice < warning < err < crit < alert < emerg

journalctl -p err                 # err 及以上
journalctl -p warning             # warning 及以上
journalctl -u nginx --since "1 hour ago" -p err

-p / --priority 表示「该级别及更严重」。

3.4 按开机批次

journalctl --list-boots           # 开机列表
journalctl -b                     # 本次开机
journalctl -b -1                  # 上一次开机(排查重启前)
journalctl -b -2

3.5 内核 / 用户 / 进程

journalctl -k                     # 内核(类似 dmesg)
journalctl _UID=0 --since today   # root
journalctl _PID=1234              # 指定进程
journalctl _COMM=java             # 按进程名(若有记录)

常用字段还可配合:_SYSTEMD_UNIT=、SYSLOG_IDENTIFIER= 等(-o verbose 可看到字段)。


四、输出格式

journalctl -u nginx -o cat            # 只要正文
journalctl -u nginx -o short-iso      # 带 ISO 时间,便于对齐
journalctl -u nginx -o json-pretty    # JSON,方便脚本
journalctl -o verbose                 # 全字段,疑难排查

导出时建议加 --no-pager,避免交互分页:

journalctl -u nginx --since today -p err --no-pager > nginx-error.log

五、持久化、清理与容量控制

5.1 重启后日志是否还在?

若 Storage=volatile 或未建持久目录,重启可能丢 journal。建议:

# 编辑
sudo vim /etc/systemd/journald.conf

关键项示例:

[Journal]
Storage=persistent
SystemMaxUse=500M
SystemMaxFileSize=100M
# 可选:按时间保留
# MaxRetentionSec=1month

生效:

sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald

5.2 手动清理

sudo journalctl --vacuum-size=100M    # 总占用压到约 100M
sudo journalctl --vacuum-time=7d      # 只留近 7 天
sudo journalctl --vacuum-time=1month
sudo journalctl --disk-usage          # 查看当前占用

5.3 导出备份

journalctl -u nginx --since today -p err --no-pager > nginx-error-$(date +%F).log
journalctl -u myapp.service --since "2026-09-14" --until "2026-09-15" -o export > myapp.journal

六、生产场景速用

# SSH 登录相关错误(实时)
sudo journalctl -u sshd -f -p err

# Nginx 近 1 小时错误(新日志在前)
sudo journalctl -u nginx --since "1 hour ago" -p err -r --no-pager

# 上次开机启动失败
sudo journalctl -b -1 -p err

# 今日严重错误
sudo journalctl --since today -p crit

# 自定义业务服务实时日志
sudo journalctl -u myserver.service -f

# Java/Spring Boot 若用 systemd 托管
sudo journalctl -u ai-risk-control.service -n 300 -p err --no-pager
sudo journalctl -u ai-risk-control.service --since "30 min ago" -f

标准排查顺序:

  1. systemctl status 服务名
  2. journalctl -u 服务名 -n 200 -p err
  3. 不够再放大时间或去掉 -p,必要时 -o verbose

七、Java / 自建服务注意点

  1. 必须用 systemd unit 管理,日志才会稳定进 journal(StandardOutput=journal / StandardError=journal,或默认继承)。
  2. 应用若只写 logs/sys-info.log,journalctl 看不到业务文件日志,仍要 tail/less 应用目录。
  3. 可同时:journalctl -u xxx 看启动/崩溃,应用 log 看业务堆栈。
  4. 权限:系统级筛选常需 sudo;普通用户可能只能看自己会话相关日志。

示例 unit 片段(示意):

[Service]
Type=simple
User=app
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar /opt/app/app.jar
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myapp

八、常见踩坑

问题处理
普通用户查不到加 sudo,或把用户加入 systemd-journal / adm 组(视发行版而定)
重启后日志没了Storage=persistent,并确保 /var/log/journal 存在
分页卡住、不好复制加 --no-pager
-u 无输出核对 systemctl status 真实 unit 名
和 /var/log/xxx 对不上应用可能写了独立文件,两边都要查
磁盘暴涨SystemMaxUse + 定期 --vacuum-*

九、命令速查表

命令作用
journalctl全部日志(分页)
journalctl -r倒序,最新在前
journalctl -n 100最近 100 行
journalctl -f实时跟踪
journalctl -u 服务名按服务
journalctl -p err错误及以上
journalctl -b / -b -1本次 / 上次开机
journalctl -k内核日志
journalctl --since "1 hour ago"时间范围
journalctl -o cat / json-pretty输出格式
journalctl --disk-usage占用空间
journalctl --vacuum-size=100M按大小清理
journalctl --vacuum-time=7d按时间清理
journalctl --no-pager不分页直接输出

十、推荐记忆组合

日常排障优先记住:

服务(-u) + 时间(--since) + 级别(-p) + 实时(-f) + 不分页(--no-pager)

示例:

sudo journalctl -u nginx --since "1 hour ago" -p err -f

覆盖绝大多数生产故障的第一轮排查;再按需结合应用自身日志文件深入分析。

node-red百科全书 ... 阅读详情

相关推荐

从零开始学习使用 AI

欢迎踏入ClaudeCode未来世界,开启与AI协作的全新旅程。无论你是零基础新手、开发者,还是非程序员,都能通过实战项目快速掌握智能体协作技能——不再只是提问,而是指挥AI完成复杂任务。你将化身主角,在16个级别、200+实践中成长为高效创造者。真正的优势不再是会用工具,而是懂得如何让智能体为你工作。取代你的不是AI,而是会用AI的人。现在,故事从你开始👇

sinat_25548781的博客 131

Linux OpenSSH 必会:ssh 密钥免密登录 + sshd 加固四招 + 认证失败排查

服务器都开着 22 端口,为什么不怕密码被暴力破解?因为 SSH 全程加密。,最后用一个「配好密钥却还要输密码」的真实故障收尾。全程两台机器演练:客户端zhb-m1(10.1.8.11)、服务端zhb-s1。

xbzb的博客 114

第28篇 sw放样特征矩形-圆-矩形学习笔记

本例演示三轮廓放样:先画中心对齐的100×100矩形草图,再在偏移100的基准面上绘制圆,最后在另一基准面画矩形。通过依次选择三个轮廓并正确设置连接点,实现矩形→圆→矩形的平滑过渡,注意连接点位置避免扭曲。

Txwtech 23

2026.11.7 AI学习总结

110 你 14b 模型权重本身就要约 8.8GB,默认上下文(Ollama 在 16GB 卡上可能给到 4K)加上 KV Cache 就爆了。比如设成 2048,你输入了 500 个 token 的问题,那模型最多还能生成 1500 个 token 的回答。超出部分会被截断,模型就"看不见"了。4 如果 14b 跑起来后发现它"忘事",再逐步往上加,比如先试 4096。,根据注意力头的重要性动态分配缓存资源,重要的留显存,不重要的下沉。,单位是 token,表示模型这一次推理最多能同时"看到"多少内容。

qq_41181702的博客 360

工业级隔离CAN FD收发器ISO1042设计实战:从原理到EMC防护

在工业自动化与伺服驱动系统中,CAN总线是实现设备间可靠通信的关键技术。其核心原理是通过差分信号传输和仲裁机制,在复杂电磁环境中实现多节点实时数据交换。这项技术的核心价值在于为高噪声、高干扰的工业现场提供了稳定、确定性的通信基础,是构建分布式控制系统不可或缺的环节。其典型应用场景包括新能源汽车电池管理、工业机器人伺服控制以及光伏逆变器集群通信等。本文将聚焦于如何通过高性能隔离CAN FD收发器(如TI的ISO1042)来应对地电位差、浪涌和高压串扰等现场挑战,深入解析其集成的电气隔离、±70V总线故障保护和

weixin_26834815的博客 382

DFT知识点扫盲——DFT scan chain

实际在项目中synccell一般直接上ULVT,既然是SDF,就是带Scan接口的DFF,SN (set negtive)是低置位,RP(reset positive)是高复位,既没有SN也没有RP的就是无复位寄存器。1:定义:满足可测试性设计(DFT),将设计中所有的触发器连接到一条或者若干条链上,称为scan chain,将一个复杂的时序电路转换为简单的组合电路进行测试,这一步是在逻辑综合(DC)中实现。当SE=1当SI=1时,电路进入scan状态,当SI=0时,电路工作在normal状态。

笨蛋大乌龟的博客 4933

MySQL建库建表操作学习笔记

SQL(Structured Query Language,结构化查询语言)是用于在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。:用于定义对数据库对象(库、表、列、索引)的操作,如 CREATE、DROP、ALTER、RENAME、TRUNCATE 等。保存可变长度的字符串(可包含字母、数字以及特殊字 符)。:用于定义对数据库记录的操作,如 INSERT、DELETE、UPDATE、SELECT 等。:用于定义对数据库、表、字段、用户的访问权限和安全级别,如 GRANT、REVOKE 等。

Eternitycai的博客 217

AHB协议中hreadyout和hready_in的区别

上面这张时序图表明master有两笔写传输,第一笔传输为slave1(s1),传输类型为SEQ,在第一笔传输的第二个周期,也就是第一笔传输的dataphase,此时slave1没有准备好被写数据,因此把s1_hreadyout拉低,但此时slave2已经看到自己的NONSEQ传输了,而且slave2已经是准备好了的。重新拿上面的仿真图看一下,由于前一个周期的s1_hreadyout为低电平,所以s2的hready_in也为低电平,那么该周期s2不会对addr以及控制信号进行采样。就不会出现上面的问题。...

weixin_44101336的博客 2865

【FreeRTOS源码学习笔记】任务创建

【FreeRTOS源码学习笔记】任务创建

2502_90565057的博客 456

apm软件仿真+QGC地面站 环境搭建

本教程使用场景:apm软件仿真运行于虚拟机 ubuntu环境。qgc地面站位于windows 系统。两个环境在同一台电脑上。 一.apm仿真环境搭建 1.安装vm虚拟机及ubuntu 18。 2.ubuntu下 下载Ardupilot 飞控源码 并配置环境。 下载源码: git clone https://github.com/ArduPilot/ardupilot cd ardupilot git submodule update --init --recursive 配置所需运行的环境:

qthello 6109

基于 MFC C++ 的心电监测客户端

4. **报警功能**:使用 `PlaySound` 播放报警音(需准备 `alert.wav` 文件),界面显示报警状态。

寒寒豆豆软件公司的博客 90

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 401

硬件电路设计采集电路

摘要:采集电路是硬件设计中连接物理世界与数字系统的关键环节,主要用于将温度、压力等物理量转换为电信号。常见的采集电路包括模拟量采集(如温度、电压)、数字量采集(如开关状态)和特殊信号采集(如光、声音)。设计时需重点关注传感器选型、信号调理、电源接地、抗干扰和ADC配置等核心要素,确保信号链路的完整性和稳定性。合理的电路设计需结合具体应用场景,通过仿真和测试验证性能,最终实现精确可靠的数据采集。

qq_37999850的博客 1796

邓明 Agent 系统面试-意图识别学习笔记

不要只是做意图识别而不做测评,就好像要评估 RAG 准确性,在接口服务要测试响应时延,超时控制等等,这里也要关注意图识别准确率,如果面试官认为项目指标太高是在吹牛,关键就是回答因为 Agent 解决的是特定领域的意图识别,识别场景单一,另外就是因为用户输入相对简单。意图识别影响 prompt/spec 的加载,意图识别影响上下文组织,意图识别影响工具选择,意图识别影响 prompt 建议,意图识别得到的意图不是让模型随机生成而是候选类别里去做选择。2.意图识别的原因,以及意图识别得到的是什么?

m0_57222081的博客 209

FreeRTOS系统从入门到精通万字保姆级教程

例如,在基于ARM的硬件平台上,可能需要实现针对ARM处理器的上下文切换代码,并确保FreeRTOS能够正确地响应和处理ARM架构的中断。需要注意的是,在删除任务之前应确保任务已经完成了其所有重要的工作,并且没有其他的任务依赖于它,以避免数据丢失或系统不稳定。任务的优先级设定是其中的关键环节。在复杂的系统中,可能会有大量的任务需要同时运行,而这些任务的重要性和紧急程度各不相同。这通常包括创建初始任务(这些任务将负责系统的初始化和后续任务的调度)、设置系统时钟(以确保任务的准时调度和延时功能的正确性)等。

大模型大数据攻城狮的专栏 2066

【数据集】CMIP6气候模式数据下载

简介CMIP6及其气候模式数据下载

WW、forever的博客 9352

CMake学习

CMake如何编译成库?1. 为什么要有库?库就是预先写好,编译好的代码集合。存在的意义,1)避免重复造轮子和重复编译,库是,你的代码在编译时直接链接它,不需要把库的源码重新编译一遍,大大节省了编译时间。;2):编译成库让别人可以直接调用我的函数,但看不到cpp源码,看不到里面的逻辑。3):大项目可以拆分给不同的团队开发不同的库,最后拼在一起。静态库:就是在程序编译和链接阶段,把库里被用到的代码部分,像打包裹一样,直接复制粘贴到最终的可执行文件(如.exe或 Linux 下的无后缀文件)里面。

m0_56487684的博客 178

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

商业经济学学习资料

商业经济学学习资料

weixin_29403917的博客 278

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

将物理先验嵌入机器人学习:从经典力学到 VLA 与 WAM

本文综述了将物理先验嵌入机器人学习的三条路径:数据与表示、模型架构、训练损失,强调其位置决定约束效力。通过夹取软物体案例,阐明运动学、动力学、接触与材料特性在任务中的分层作用。指出物理先验非万能,需匹配实际条件;强约束可加速学习,但误用会引入偏差。提出“有效刚度”等概念,强调主动探测与参数辨识的重要性,并警示仅靠单一方法无法保障安全执行,需结合在线验证与控制闭环。

lovely_yoshino的博客 667

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【学习笔记】51单片机 模块化编程

模块化编程:把各个模块的代码放在不同的c文件里,在.h文件里提供外部可调用函数的声明,在其他.c文件想使用其中的代码时,只需要#include"xxx.h"文件即可。传统方式编程:所有的函数均放在main.c中,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码组织和管理,而且很影响编程者的思路。使用LCD602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录,安全目录,自定义)

2601_96469072的博客 216

ENSP学习记录(1)

本文分享了在ENSP环境中学习通信、网络通信与数据通信网络的区分心得。通过类比“传话”“用网络传话”“设备系统传话”,厘清三者层级关系;以寄快递比喻封装过程,理解报文结构;反思“报文必有尾部”“网关是设备”等误区,强调概念本质理解的重要性。核心观点:能否举出反例,是检验是否真正掌握的关键。

W20070611的博客 214

Linux网络学习【深入理解多路转接epoll】

本文围绕 Linux 多路转接 epoll 展开,以“设计动机—核心机制—触发模式—代码实践”为主线,对比 select、poll 的监听管理与就绪检查方式,解析关注集合、就绪列表及核心接口,重点讲解水平触发与边缘触发的行为差异,以及边缘触发配合非阻塞读写的处理要点。结合多连接服务器实践,梳理事件注册、连接接收、部分收发、可写事件按需监听及断开清理流程,厘清就绪通知与操作完成的区别,分析常见错误与性能影响因素,帮助读者建立从事件循环到连接管理的完整认识,为高并发服务器与事件驱动框架开发打下基础。

承于所学,探技术之渊;以代码求政,寻成长之道。 1万+

正则表达式学习笔记 02:基础语法

正则表达式是描述字符匹配规则的迷你语言,由普通字符和元字符组成。普通字符直接匹配自身,而元字符如.、*、+、^、$等具有特殊含义,用于控制匹配模式。常见功能包括任意字符匹配、字符类、预定义类(如\d)、量词、位置锚点、分组与捕获、环视断言及反向引用。需注意,若要匹配元字符本身,必须使用转义符\。例如,\.可匹配字面点号。

菜鸟的专栏 152

ES6:Iterator与Generator函数学习及Generator函数和async实现异步编程理解

几个概念:可迭代对象是指具有迭代器接口的对象: 实现类数组使用 for of 循环 对象无法使用数组的迭代器。 generator 函数类似遍历器函数,返回一个迭代器对象; 该对象调用 方法时,会把 后面的表达式作为值 ,并执行当前指针与下一步指针之间的程序。 generator 实现迭代器函数 后面跟的内容为 得到的 值。流程:循环 会调用 generator 函数,返回一个 iterator 对象, 方法由 generator 内部的 决定。 Gene

2403_87566238的博客 212

为什么学习 GUI 程序设计:从 Swing 入门桌面界面开发

学习GUI程序设计能让程序从“能用”走向“好用”,提升用户体验与开发能力。选择Java Swing作为入门,因其随JDK自带、跨平台一致、组件完整且学习曲线平缓。通过掌握容器、组件、布局与事件四大核心概念,结合最小示例实践,可快速构建交互界面。建议循序渐进:运行示例→熟悉组件→理解事件→组合布局→完成小项目(如待办清单),夯实桌面应用开发基础。

xyouyuweizhu的博客 107

echarts学习手记

本文介绍ECharts的引入与基本使用:通过npm安装并按需引入核心模块、图表类型及组件,注册后初始化图表实例。结合resize事件实现响应式布局,通过dispose()销毁实例避免内存泄漏,并支持自定义主题与seriesLayoutBy配置调整数据映射方式,提升图表灵活性与性能。

qq_43592674的博客 38
上一篇: 学习笔记097——Ubuntu系统中如何通过service服务的方式启动 jar 包?
须晴日.
博客等级 码龄5年 595粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值