假设计算机不定期启动。我想每月一次在启动时运行某个脚本。但我无法设置 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 磁盘?