在启动时定期运行某些脚本

在启动时定期运行某些脚本

假设计算机不定期启动。我想每月一次在启动时运行某个脚本。但我无法设置 cron 作业,因为我不知道机器是否会在这个日期启动。

我考虑过这种方法。

  • 我创建一个包含脚本执行的上次日期时间的文件。
  • 每次启动我都会执行以下操作:

if(file_exists("last_boot.txt"))
{
    if(<<more then a month has passed since last date time>>)
    {
        <<run script>>
    }
}
else
{
    <<run script>>
}

<<write current date time into the file>>

是否可以使用一些标准工具来完成此操作,而无需使用文件技巧?

答案1

只需*使用 cron 按任一计划运行它并检查其他脚本中的部分时间表:

单程:

@reboot /path/to/my_script.sh

if has_run_this_month() {
    exit
}

另一种方式:

0 0 1 * * /path/to/my_script.sh

if has_run_since_reboot() {
    exit
}

* 这种运行方式存在几个问题:

  • 您是否曾让机器运行超过一个月?两个月?在这两种情况下会发生什么?
  • 你离开过机器吗离开一个多月了?你可以看到这是怎么回事……
  • 你如何确保你坚持状态的路径(因为你将其存储在持久的地方)不会在启动时被擦除,因为它是 RAM 磁盘?

相关内容