银河麒麟 V10 出问题了该看哪个日志?secure 找不到、journalctl 查不到历史,一次解决

服务起不来,你敲 systemctl status 只看到一行 failed,提示去看日志。你打开 /var/log 一翻,别人教程里说的 /var/log/secure 根本没有,journalctl -u nginx 一片空白,重启之后连上次为什么崩都查不到了。

这三个现象在麒麟上不是个例。桌面版和服务器版的日志路径是分家的,journald 默认不落盘,yum.log 还是个空壳。这篇按症状给路径,对着查就行。

一、先确认日志到底记没记上

别急着翻 /var/log,先用一条命令判断日志有没有进 systemd:

bash 复制代码
journalctl -u nginx --since "10 min ago"

有输出,说明日志已经进 journald,直接跳到第三节按关键字检索。

没输出,屏幕上只有一行 -- No entries --,说明你要找的日志根本不在 journald 里,得去文件里翻。这时候先判型,路径分家就是从这儿开始的:

bash 复制代码
cat /etc/.kyinfo 2>/dev/null | head -3
echo '---'
[ -f /etc/yum.repos.d/kylin.repo ] && echo '服务器版(yum 系,日志走 RHEL 路径)' || echo '桌面版(apt 系,日志走 Debian 路径)'

服务器版有 /etc/yum.repos.d/kylin.repo,桌面版没有。判完型,回第二节按症状找文件。

二、按症状找文件,别按目录背

下面这张表是解题路径,不是目录清单。左边是你遇到的现象,右边是去哪看。

你遇到的现象 去哪个文件 / 命令 版本差异
SSH 登录失败、怀疑有人扫端口 /var/log/secure 桌面版这里没有,改看 /var/log/auth.log
服务起不来、进程莫名退出 journalctl -u 服务名 -b 两版通用
机器上次为什么崩的 /var/log/journal/(需手动开,见第四节) 两版通用
装包装崩了、想回滚 /var/log/dnf.log 桌面版改看 /var/log/dpkg.log
磁盘满、想查谁写的 du -sh /var/log/* 两版通用
等保要审计记录 /var/log/audit/audit.log 需 auditd 在跑
程序被麒麟安全模块拦了 /var/log/kysec 麒麟专属,不在 audit.log 里
开机卡住、进不了系统 journalctl -b -1 -p err 看上一次启动
定时任务没执行 journalctl -u cron 或 /var/log/cron 桌面版可能只有 journald
内核报硬件错、驱动加载失败 dmesg -T 或 journalctl -k 两版通用

有坑 :/var/log/yum.log 在麒麟服务器版上是个空壳。麒麟的包管理实际是 dnf,yum 只是个软链,真正的记录写在 /var/log/dnf.log。你 cat yum.log 看到空文件,不代表没装过包。

有坑 :/var/log/messages 在部分桌面版上是空的,甚至不存在。桌面版的系统日志走 /var/log/syslog,别死磕 messages。

三、日志进了 journald 怎么检索

确认日志在 journald 里,这四条组合拳基本够用:

bash 复制代码
# 只看某个服务本次启动之后的日志
journalctl -u nginx -b

# 只看错误级别往上(emerg/alert/crit/err)
journalctl -u nginx -b -p err

# 按时间段切,支持自然语言
journalctl --since "2026-09-01 09:00" --until "2026-09-01 10:00"

# 实时跟,等价于 tail -f
journalctl -u nginx -f

查上一次崩溃原因,关键在 -b -1:

bash 复制代码
journalctl -b -1 -p err --no-pager | head -50

-b 是本次启动,-b -1 是上一次启动,-b -2 是上上次。机器只要重启过,查上辈子的日志就只能靠它,前提是 journald 落了盘。

按进程号或者命令名精确定位:

bash 复制代码
journalctl _PID=1234
journalctl _COMM=sshd

只看内核环缓冲(等价于 dmesg,但能带时间戳和过滤):

bash 复制代码
journalctl -k -p err

四、查不到历史日志?journald 默认不落盘

这是最要命的一个坑。麒麟默认配置里 Storage=auto,意思是 /var/log/journal 目录存在就落盘,不存在就只放内存,重启即焚。

先看你机器现在落没落盘:

bash 复制代码
ls -ld /var/log/journal

目录不存在,就是这个坑。开持久化只要三步:

bash 复制代码
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

有坑 :只 mkdir 不重启 journald 不生效,日志还是写内存,重启照样丢。

落盘之后日志会一直涨,用这几条管住体积:

bash 复制代码
journalctl --disk-usage                 # 看现在占多大
sudo journalctl --vacuum-size=1G        # 砍到 1G 以内
sudo journalctl --vacuum-time=30d       # 只留最近 30 天

有坑 :--vacuum-size 直接删落盘的日志文件。执行前确认有没有等保或者审计的留存要求,生产机器上先备份 /var/log/journal 再清。

想彻底固定策略,编辑 /etc/systemd/journald.conf:

ini 复制代码
[Journal]
Storage=persistent
SystemMaxUse=1G
MaxRetentionSec=30day

改完 systemctl restart systemd-journald 生效。

五、这三个日志不能用 cat 看

/var/log 下面有三个文件是二进制的,直接 cat 出来是一堆乱码:

bash 复制代码
last          # 读 wtmp,谁登录过、机器什么时候重启过
lastb         # 读 btmp,谁登录失败过(查暴力破解)
lastlog       # 读 lastlog,所有用户最后一次登录时间

查 SSH 暴力破解,一条命令就够:

bash 复制代码
lastb | awk '{print $3}' | sort | uniq -c | sort -nr | head -20

输出里次数特别高的 IP,直接拉进 /etc/hosts.deny,或者交给 firewalld 封掉。

六、验证你这套日志链路是通的

改完别拍脑袋就走,按顺序验证一遍:

bash 复制代码
# 1. 确认 journald 在跑且已落盘
systemctl is-active systemd-journald
ls /var/log/journal/

# 2. 写一条测试日志
logger -t test "kylin log check 2026"

# 3. 确认能查到
journalctl -t test --since "1 min ago"

# 4. 开个新终端 ssh 本机失败一次,确认认证日志在写
sudo tail -5 /var/log/secure      # 服务器版
sudo tail -5 /var/log/auth.log    # 桌面版

第 3 步能查到你刚写的 test,说明 journald 链路通。第 4 步能看到失败记录,说明认证日志链路通。两条都通,下次出事你才有的查。

七、防复发:把两件事定成规矩

第一件,装机或者接手一台新机器,先把 journald 持久化打开。没有落盘日志,事后排查全靠猜。

第二件,日志轮转别全指望默认配置。麒麟上 /etc/logrotate.conf 默认按周轮转、保留 4 份,磁盘紧张的机器容易在第一轮就被撑满。对增长快的日志单独配一份:

bash 复制代码
sudo vi /etc/logrotate.d/kylin-custom
text 复制代码
/var/log/dnf.log /var/log/kysec/*.log {
    weekly
    rotate 8
    compress
    missingok
    notifempty
}

改完用 logrotate -d /etc/logrotate.d/kylin-custom 干跑一遍校验语法,不报错就生效。


附:/var/log 路径与 journalctl 参数速查

路径 作用 版本
/var/log/secure 认证、SSH 登录 服务器版
/var/log/auth.log 同上 桌面版
/var/log/messages 系统主日志 服务器版
/var/log/syslog 同上 桌面版
/var/log/kern.log 内核日志 桌面版
/var/log/dnf.log 包管理记录(真实) 服务器版
/var/log/yum.log 空壳,看 dnf.log 服务器版
/var/log/dpkg.log 包管理记录 桌面版
/var/log/audit/audit.log 审计记录 需 auditd
/var/log/kysec 麒麟安全模块拦截 麒麟专属
/var/log/journal/ journald 落盘目录 需手动开
/var/log/boot.log 启动过程 部分版本空
/var/log/cron 定时任务 服务器版

journalctl 常用参数:

text 复制代码
-u 服务名       按服务过滤
-f              实时跟随
-b              本次启动;-b -1 上一次启动
--since/--until 按时间切
-p err          按级别(emerg/alert/crit/err/warning/notice/info/debug)
-k              只看内核日志
_PID= / _COMM=  按进程号 / 命令名
--disk-usage    看占用
--vacuum-size=  按体积清理
--vacuum-time=  按时间清理
--no-pager      不进分页,方便管道

日志这东西,平时没人看,一出事就是唯一的线索。核心就一句:先确认记没记上,再按症状找文件,查不到历史就把 journald 落盘打开。现在花三分钟开持久化,比出事之后抓瞎强得多。

相关推荐
RuoyiOffice16 小时前
SpringBoot OA推荐:面向信创选型,看看这套企业协同平台
spring boot·vue3·信创·flowable·企业协同·ruoyi office·oa选型
正在走向自律1 天前
数据集成产品的技术底座:从日志解析原理到 KFS 同步链路搭建(含建表与增删改查完整代码)
数据库·oracle·信创·数据集成·国产数据库·kingbasees·全量+增量同步
handonch3 天前
金仓 KingbaseES 时区问题根治指南:从「总是差 8 小时」到全链路统一
linux·docker·postgresql·信创
数据库小学妹7 天前
数据库运维怎么做:五级成熟度对照与落地清单
信创·数据库高可用·数据库监控·数据库运维·数据库运维管理·数据库备份恢复
Hpc_Fun8 天前
GPU 工作站品牌怎么比?五把可核验尺子、加权评分脚本与场景重排
java·信创·gpu工作站·品牌对比·加权评分
fleaxin9 天前
国产 AI 卡推理引擎工程对标调研(C++ CUDA + TensorRT → 国产栈)
gpu·信创·cuda
爱笑的源码基地10 天前
云 PACS 源码实践:HL7 对接 HIS / 电子病历
源码·开发·信创·pacs·医学影像
RuoyiOffice13 天前
达梦 DM8、openGauss、人大金仓怎么选?RuoYi Office 国产数据库适配与验收指南
java·数据库·spring boot·架构·信创
MinterFusion13 天前
如何在openKylin下离线安装360安全浏览器(v0.1.0)
安全·信创·系统运维·明德融创·openkylin·360安全浏览器·银河麒麟桌面
数据库小学妹18 天前
数据共享交换平台选型:交换方式对比与避坑指南
数据库·信创·数据同步·数据交换平台·政务数据共享·数据共享交换平台·数据库底座