是否可以检测到即将关闭(或重新启动)正在进行中?

是否可以检测到即将关闭(或重新启动)正在进行中?

我正在尝试在 bash 中编写一个脚本,我打算在系统启动时启动并在系统关闭时结束。我的想法是为自己创建一个系统正常运行时间跟踪器。

为此,我想将每天的正常运行时间保存在一个文件中。但我无法找到一种方法来知道用户(或系统)何时触发关闭。这非常重要,因为否则我将无法在文件中保存会话结束时间。

此外,还可以通过在一段 x 时间后运行循环并保存当前的正常运行时间来完成。但我认为它效率低下,同时会执行不必​​要的磁盘操作。

可能有现成的解决方案可用于此(或者可能是本机命令),但我想自己编写代码。

答案1

您可以通过检查日志文件来获取大部分信息,而不是安装脚本。如果您确实想在关机/重新启动时直接运行脚本,您可以安装(取决于您的系统)systemd 脚本或 init 脚本。实际上,安装脚本来测量关闭/启动事件不会涵盖崩溃,您仍然需要检查日志。

该文件/var/log/wtmp记录重新启动,在每次启动结束时记录一个事件。该last命令解释此文件,并默认显示两次启动之间的时间(但不显示两次启动之间的正常运行时间)。但是,这不会记录关闭情况。也可以添加一个脚本来添加 wtmp 条目来记录 wtmp 中的关闭情况。

为了解决崩溃问题,您必须查看每次重新启动时间,然后找到/var/log/syslog*具有重新启动时间的文件,然后回溯到启动开始之前的第一个条目并检查该时间。

看来 tuptime 包完成了大部分工作,并且可能正是您想要的。

相关内容