如何确定启动时是否执行了 fsck 操作。我了解默认的 fsck 配置和行为,但是否有报告或状态显示是否发现任何 fsck 问题或执行了修复操作?
我的系统控制台确实显示“干净”消息,但 dmesg 没有:
... [确定]开始在/dev中创建静态设备节点。 正在启动 udev 内核设备管理器... [ OK ] 启动 udev 内核设备管理器。 正在开始复制根权限时生成的规则... [ OK ] 开始复制 root 为 ro 时生成的规则。 [6.346472]systemd-fsck[171]:ROOTFS-A:干净,26178/78240个文件,107613/312576个块 ...
也许有一个标准的 API 来查询 fsck 操作和状态,而不是查看日志文件?
答案1
您正在寻找该systemd
期刊。man journalctl
可以作为你的切入点。要查看日志,systemd-fsck
您可以查看:
journalctl -u systemd-fsck*
正如您将在 中看到的man journalctl
,还有机器友好的输出选项,例如 JSON。除了用于查询服务状态的其他 systemd 工具之外,这与您将要使用的 API 来查询 fsck 状态一样接近:
systemctl status systemd-fsck*
正如您将在 中看到的man systemctl
,它还提供了机器友好的输出格式。
我知道fsck
如果没有systemd
.
答案2
我可以确认唐克里斯斯蒂上面的回应。
对于运行 Debian 8.3 (Jessie) 的 Beaglebone,结果如下/run/initramfs/fsck.log
我有fsck.mode=强制和fsck.repair=是 设置在/boot/uEnv.txt对于内核命令行选项
root@beaglebone:~# more /run/initramfs/fsck.log
Log of fsck -C -f -y -V -t ext4 /dev/mmcblk0p1
Thu Jun 28 13:52:24 2018
fsck from util-linux 2.25.2
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1]
fsck.ext4 -f -y -C0 /dev/mmcblk0p1
e2fsck 1.42.12 (29-Aug-2014)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
BOOT: 38273/240000 files (0.1% non-contiguous), 284298/958208 blocks
root@beaglebone:~# cat /etc/dogtag
BeagleBoard.org Debian Image 2016-02-15
root@beaglebone:~# more /etc/debian_version
8.3
root@beaglebone:~# uname -a
Linux beaglebone 4.1.17-ti-rt-r48 #1 SMP PREEMPT RT Fri Feb 12 23:46:00 UTC 2016 armv7l GNU/Linux