CentOS系统中的定时任务主要通过crond服务(Cron Daemon)实现周期性执行,其默认的检查频率和任务执行频率遵循以下规则:
crond服务默认每分钟会扫描一次/var/spool/cron/(用户定时任务)和/etc/cron.d/、/etc/cron.hourly/等系统定时任务目录,判断是否有需要执行的任务。这一频率是crond的核心机制,无法通过配置文件直接修改(如需更短间隔,需通过脚本循环实现,但会增加系统负载)。
CentOS提供了分类的系统定时任务目录,对应不同的默认执行频率:
/etc/cron.hourly/目录下的脚本(如日志轮转、临时文件清理等),由crond每60分钟触发一次;/etc/cron.daily/目录下的脚本(如系统备份、磁盘空间检查等),默认在02:00-23:59之间随机时间执行(避免所有服务器同时运行导致负载高峰);/etc/cron.weekly/目录下的脚本,默认在每周日02:00-23:59之间随机执行;/etc/cron.monthly/目录下的脚本,默认在每月1日02:00-23:59之间随机执行。用户可通过crontab -e命令编辑个人定时任务,格式为:
分钟 小时 日 月 周 命令
各字段含义及取值范围:
*表示每分钟,*/5表示每5分钟;*表示每小时,0表示午夜0点;*表示每天,1-7表示每周的第几天(0或7表示周日);*表示每月;*表示每周,0表示周日。示例:
*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1;0 2 * * * /usr/bin/mysqldump -u root -p密码 数据库名 > /backup/db.sql。若需实现秒级定时任务(如每30秒同步一次),crond本身不支持,可通过以下方式解决:
sleep命令,例如:* * * * * sleep 30; /usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1
该配置会让crond每分钟执行一次脚本,脚本内部等待30秒后再执行同步命令,实现每30秒同步一次的效果;systemd定时器(适用于CentOS 7及以上版本),支持更灵活的时间间隔配置。通过以上配置,可根据需求调整CentOS系统中定时任务的更新频率。需注意,过于频繁的定时任务可能会增加系统负载,建议根据实际场景合理设置。