如何阻止python-crontab自动将Cron规则转换为别名?
解决python-crontab自动转换Cron规则的问题
一、禁用python-crontab的自动别名转换
python-crontab默认会把标准Cron规则(如0 * * * *、0 0 * * *)自动转为@hourly、@daily这类别名,只需在创建CronTab对象时添加参数禁用该行为:
from crontab import CronTab # 加载用户crontab并关闭别名自动转换 cron = CronTab(user=True, replace_aliases=False)
添加新任务时,直接用字符串指定原始Cron规则,不要使用库提供的hourly()、daily()封装方法:
# 创建新任务并设置原始规则 job = cron.new(command='/usr/local/bin/your_script.sh') job.setall('0 * * * *') # 保持标准规则格式,不会被转为@hourly # 保存修改 cron.write()
操作后,原有和新增的Cron规则都会保留原始格式,不会被转换为别名。
二、启用系统Cron的别名支持
如果你的系统Cron版本(如多数现代Linux的cronie、Vixie Cron)支持别名但未启用,可手动在crontab或系统配置中定义别名映射:
注意:部分老旧BSD系统的Cron不支持这类别名,此方法仅适用于兼容版本。
在crontab头部添加以下内容:
@hourly 0 * * * * @daily 0 0 * * *
也可将上述内容写入/etc/cron.d/aliases这类系统级cron配置文件(具体路径依系统而定)。修改后重启cron服务生效:
# systemd系统 systemctl restart cron # SysVinit系统 service cron restart
内容的提问来源于stack exchange,提问作者Hari Shreyas
相关产品推荐
相关产品推荐

