在日常的Linux系统管理中,我们经常需要执行一些周期性任务,比如备份数据、清理日志或更新软件。对于始终开机的服务器来说,
cron是最常用的工具。但如果你使用的是笔记本电脑、开发机或者偶尔关机的设备,
cron就可能错过任务执行时间。
这时,anacron 就派上用场了!本文将手把手教你如何在 RockyLinux 系统中使用
anacron命令,来可靠地执行那些非24小时运行环境下的定时任务。
什么是 anacron?
anacron(全称:anachronistic cron)是一个专为非持续运行系统设计的定时任务调度器。与
cron不同,它不依赖系统在特定时间点必须开机,而是以“天”为单位检查任务是否已执行,若未执行则在系统下次启动后尽快运行。
因此,
anacron非常适合用于个人电脑、开发工作站或间歇性开机的服务器——这正是 非24小时运行任务 的典型场景。
anacron 与 cron 的区别
cron:要求系统在设定时间点必须在线,否则任务会丢失。 anacron:即使系统关机,只要在周期内某次开机,就会补执行遗漏的任务。在 RockyLinux 中安装 anacron
大多数 RockyLinux 安装默认已包含
anacron。如果没有,可通过以下命令安装:
sudo dnf install cronie-anacron
安装完成后,
anacron通常由
crond服务自动调用,无需单独启动服务。
配置 anacron 任务
anacron的主配置文件位于
/etc/anacrontab。你可以直接编辑它,也可以在
/etc/cron.{daily,weekly,monthly} 目录下放置脚本,这些脚本会被 anacron自动调度。
让我们先看看默认的
/etc/anacrontab内容:
# /etc/anacrontab: configuration file for anacron.# See anacron(8) and anacrontab(5) for details.SHELL=/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# the maximal random delay added to the base delay of the jobsRANDOM_DELAY=45# the start period of anacron (in minutes)START_HOURS_RANGE=3-22#period in days delay in minutes job-identifier command1 5 cron.daily nice run-parts /etc/cron.daily7 25 cron.weekly nice run-parts /etc/cron.weekly@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
各字段含义如下:
period:任务执行周期(天),如 1 表示每天,7 表示每周,@monthly 表示每月。 delay:系统启动后延迟多少分钟执行(避免开机时资源争抢)。 job-identifier:任务唯一标识,用于记录上次执行时间(存于/var/spool/anacron/)。 command:要执行的命令或脚本。
添加自定义 anacron 任务(小白也能操作)
假设你想每天备份一个目录到家目录,即使电脑昨天关机了,今天开机也要补做一次备份。
步骤如下:
创建备份脚本/home/youruser/backup.sh(替换 youruser 为你的用户名):
#!/bin/bash# 备份 Documents 目录到 backup_日期.tar.gzDATE=$(date +%Y%m%d)tar -czf /home/youruser/backups/backup_$DATE.tar.gz /home/youruser/Documents
记得赋予执行权限:
chmod +x /home/youruser/backup.sh 将脚本放入
/etc/cron.daily/目录(这样会被 anacron 每天调度):
sudo cp /home/youruser/backup.sh /etc/cron.daily/my-backup
注意:文件名不能包含
.,否则
run-parts会忽略它。
现在,无论你哪天开机,只要距离上次执行超过 1 天,
anacron就会在开机后(加上随机延迟)自动运行这个备份任务。这就是 Linux系统维护 中非常实用的功能!
验证 anacron 是否工作
你可以手动触发测试:
sudo anacron -f -n
参数说明:
-f:强制运行所有任务,忽略时间记录。
-n:不使用随机延迟,立即执行。
查看日志确认执行情况:
grep anacron /var/log/cron
总结
通过本文,你已经掌握了如何在 RockyLinux 中使用
anacron命令来处理 非24小时运行 环境下的定时任务。无论是日常备份、日志清理还是其他周期性维护工作,
anacron都能确保任务不会因关机而遗漏。
记住关键点:把脚本放进
/etc/cron.daily/、
/etc/cron.weekly/或
/etc/cron.monthly/,
anacron会自动帮你调度。这是每个 Linux 用户都应了解的 anacron定时任务 基础技能。
现在,就去试试吧!让你的 Linux系统维护 更加智能和可靠。
