Ubuntu 文件系统在重启后损坏(cron)

Ubuntu 文件系统在重启后损坏(cron)

操作系统:Ubuntu 20.04.3 LTS

基本上,我将 root cron 设置为每周重启一次。起初我使用了以下行:

0 1 * * 0 /sbin/shutdown -r now

几个星期后,我开始注意到每次重启后都会出现一些小问题,但很烦人。所以我决定在大约两周前更换它。我让它运行一个脚本reboot

0 1 * * 0 /home/user/reboot.bash

这两周我注意到的问题少了,但是有一个错误曾经在旧的 crontab 中发生过,而今天在新的 crontab 中又发生了 -文件系统变为只读

当然,快速fsck修复它没有问题。但我不知道为什么当我使用 cron 重新启动时它会破坏文件系统。当我使用 GUI 或手动重新启动时reboot,它工作正常。

请记住,这种情况并不总是发生;上周一切都很好。有时问题也不同 - 有一次我的一些驱动程序停止工作了。

我看过一些帖子,有人在双启动时遇到了这个问题。但是我不认为这适用,因为我的机器上只有 ubuntu。我不知道该发布哪些日志,所以如果你需要任何日志,请在评论中告诉我。

答案1

安排“每周重启”是一种老旧的做法,现在已不再需要。Linux 不是 Windows。盲目重启,而不同步文件系统和硬件会导致文件系统损坏和数据丢失。大部分损坏可以在启动时自动修复,但不是全部。丢失的数据是无法挽回的。不要自动重启。

相反,找出导致您“需要”重新启动的原因,诊断问题并修复它。

一个有用的工具是journalctl系统日志查看器。阅读man journalctl。执行sudo journalctl --list-boots以查看索引和时间(这需要一段时间,因为它需要读取所有曾经记录的日志)。索引0是从当前启动到当前时间,-1 是针对上次启动,等等。

记录建议:

# do this once (or forever have to `sudo journalctl`)
sudo adduser $USER systemd-journal 
# then either logout/login or `newgrp systemd-journal`

# add to ~/.bash_aliases or ~/.bashrc 
# tsjou "18-11-01 01:55:28" for journalctl --since 
alias tsjou="date '+%y-%m-%d %H:%M:%S'" 
# use other `date` options, e.g. `tsjou --date=yesterday`
# make "journalctl" easier to type
alias jc=journalctl 

# record beginning for journalctl (a thumbtack in the log flow)l
alias jstart="my_JSTART_TIME=\"\$(tsjou)\"" 
# show all logs since `jstart`
alias jend="journalctl --since=\"\$my_JSTART_TIME\""

# what happened in the last 5 or 10 minutes?
alias jc5="journalctl --since=\"-5 minutes\"" 
alias jc10="journalctl --since=\"-10 minutes\"" 
# what has NetworkManager logged since boot?
alias jcnet="journalctl -b 0 _SYSTEMD_UNIT=NetworkManager.service"

相关内容