我是 Linux 新手,如果我以正确的方式做事,我总是不安全我使用的 Raspbian 系统有时会重新启动(对于一些非软件问题),并且我希望在每次重新启动时登录发生。我的想法是这样的: crontab 任务如下:
@reboot date >> /var/log/reboots
它有效。还有更优雅的吗?如果解决方案可以接受,是否有某种方法可以“滚动”日志文件以避免填充日期文件系统;)?
答案1
在 Debian 上,会记录重新启动。从man last
:
Last searches back through the file /var/log/wtmp (or the file desig-
nated by the -f flag) and displays a list of all users logged in (and
out) since that file was created.
...
The pseudo user reboot logs in each time the system is rebooted. Thus
last reboot will show a log of all reboots since the log file was cre-
ated.
默认情况下,该/var/log/wtmp
文件应该已经处于日志轮转状态(请参阅 参考资料/etc/logrotate.conf
),请注意这一点。
您可以使用以下选项使用较旧的日志文件-f
:
last reboot -f /var/log/wtmp.1
答案2
crontab 条目可以,但需要cron
启动。我自己倾向于将类似的行放入/etc/rc.local
在达到多用户运行级别结束时调用的行中。
如果您以单用户模式启动(无论是否愿意),两者都可能不会被调用。如果这不够准确,您可能需要考虑采用不同的路径并分析/var/log/syslog
最近的引导消息,并将所有日期时间戳添加到您以这种方式记录的最后一个文件之后的文件中。您可以从cron
或运行它rc.local
,但它假设/var/log/syslog
在重新启动之间得到正确的保存。
我不会担心重新启动时写入的单个 30 个字符,这不会比其他任何东西都更填满您的光盘。如果您确实认为这是一个问题,那么只需使用 4 个字节(32 位)作为二进制文件将其记录在文件中即可。您可以通过降低准确性来进一步减少这种情况,然后在重新启动之间存储一些增量。