tune2fs不支持直接设置下次强制自检的具体日期和时间,只能通过调整检查间隔(-i)和上次检查时间(-t)间接实现:先用-i设定周期(如30d),再用-t将last checked设为目标日期减去该周期的时刻。

tune2fs 本身 不支持直接设置“下次强制自检的具体日期和时间”(比如设定为 2026年5月15日 14:30),它只能通过两个策略间接控制自检时机:
- 挂载次数(
-c) - 自检时间间隔(
-i),单位是天、周或月,起始点是 上一次e2fsck成功检查的时间(即Last checked时间),不是当前时间,也不是你运行 tune2fs 的时间。
所以,要“逼近”某个目标日期,你需要:
查看当前自检基准时间
sudo tune2fs -l /dev/sdXN | grep -E "Last checked|Check interval|Maximum mount count"
输出类似:
Last checked: Wed Apr 10 02:15:32 2026 Check interval: 15552000 (6 months) Maximum mount count: -1
这里 Last checked 是关键——所有 -i 计算都从这一刻开始推算。
调整 Last checked 时间来“设定下次检查日”
虽然不能设未来某时,但你可以把 Last checked 改成一个更早的时间,让系统提前触发下一次检查。
例如:你想让 /dev/sdb1 在 2026年6月1日 触发检查,且已知 Check interval 是 30d(30天),那么可将 Last checked 设为 2026年5月2日 00:00,这样 30 天后就是 6 月 1 日。
✅ 正确做法(需 root 权限):
# 先确认设备未挂载(或只读挂载),否则会失败 sudo umount /dev/sdb1 # 使用 -T 设置 Last checked 时间(格式:YYYY-MM-DD[ HH:MM:SS]) sudo tune2fs -T "2026-05-02 00:00:00" /dev/sdb1 # 验证 sudo tune2fs -l /dev/sdb1 | grep "Last checked"
⚠️ 注意:
-
-T参数仅修改元数据中的时间戳,不改变系统时钟,也不立即触发检查; - 下次启动或手动
fsck时,系统会比对Last checked + Check interval和当前时间,若已超期则自动执行; - 必须确保
Check interval已启用(非 0 或 -1);可用sudo tune2fs -i 30d /dev/sdb1设置; - 若
Maximum mount count(-c)也生效,只要满足任一条件(时间 or 次数),就会检查。
补充:常见时间设置示例
- 设为“永不检查”:
sudo tune2fs -c -1 -i 0 /dev/sdb1
- 设为“每90天检查一次”:
sudo tune2fs -i 90d /dev/sdb1
- 把上次检查时间设为 1 年前(快速触发下次检查):
sudo tune2fs -T "$(date -d '1 year ago' '+%Y-%m-%d %H:%M:%S')" /dev/sdb1
小结
tune2fs 没有 --set-next-check-at="2026-06-01" 这样的选项。
你要控制具体日期,本质是:
- ✅ 用
-i定义周期长度(如45d) - ✅ 用
-T把Last checked往前拨,使Last checked + interval等于你想要的日期
只要这两个值配合得当,就能让 fsck 在接近目标时间点自动运行。











