银河麒麟 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 落盘打开。现在花三分钟开持久化,比出事之后抓瞎强得多。

相关推荐
寻道码路13 小时前
大模型工程化实战(十六):政企国产化避坑——合规/信创名录/私有化运维/国产硬件适配/原厂支持这五道关怎么过
大模型·agent·信创·rag·ai工程化·国产化替代·政企ai落地
豆豆2 天前
政企网站改版选型:从等保测评指标倒推CMS能力清单
信创·国产化·等级保护·网站改版·网站改造·政企信息化·cms选型
数据库小学妹8 天前
数据迁移怎么做才不返工?六步闭环与兼容性分层验收方法
信创·数据迁移·国产数据库·数据库迁移·数据校验
布裘15 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
技术拾荒的人儿16 天前
信创环境部署问卷系统,2026这五款工具的私有化支持情况
私有化部署·信创·系统运维·问卷系统·内网部署
归真仙人18 天前
【UE项目迁移银河麒麟(Linux)局域网会话搜索失败排查】
ue5·ue4·vr·unreal engine·银河麒麟
DolphinDB21 天前
持续升级!DolphinDB 全面完成银河麒麟 V11 兼容性认证
时序数据库·信创·银河麒麟·dolphindb
企业通信技术笔记21 天前
信创环境下企业即时通讯IM怎么部署?5类方案的架构与适配思路
架构·私有化部署·信息与通信·信创·企业即时通讯
羌俊恩21 天前
信创数据库之华为Gaussdb 概览
信创·gaussdb·国产化·数据库改造评估·gtm-lite