systemd-fsck 或 fsck 是否生成状态报告?

systemd-fsck 或 fsck 是否生成状态报告?

如何确定启动时是否执行了 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

相关内容