gue*_*tli 5 python django crontab entry-point
到目前为止,我们手工管理服务器的crontabs.
我看到了这个:
http://django-extensions.readthedocs.org/en/latest/jobs_scheduling.html
这是一个不错的django应用程序,因为您只需要编辑一次crontab.
您输入一次这样的行,并且将来软件更新就足够了,无需手动修改crontab来添加新作业.
@hourly /path/to/my/project/manage.py runjobs hourly
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个:它需要django.
有人看过一个没有这种"大"依赖的解决方案吗?
例如,使用EntryPoints查找所有包含每小时/每周/每月要完成的事项的解决方案?
更新
所有cron作业都是按linux用户安装的,而不是root用户.
依赖性最少的方法是简单地利用crontaband run-parts。
首先,设置您的用户 crontab 为每个计划运行一个脚本(例如crontab -e):
@hourly /path/to/run-hourly
@daily /path/to/run-daily
@weekly /path/to/run-weekly
@monthly /path/to/run-monthly
Run Code Online (Sandbox Code Playgroud)
这类似于将每个脚本符号链接到/etc/cron.{hourly,daily,weekly,monthly}Debian 上的相应脚本,但这样做的好处是允许所有者用户而不是 root 用户运行它们。
其次,定义每个脚本来运行其作业。对于最简单的情况,每个脚本都可以用来run-parts运行其指定目录中的所有可执行作业脚本。
#!/bin/bash
#/path/to/run-hourly
run-parts /path/to/hourly/jobs
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
#/path/to/run-daily
run-parts /path/to/daily/jobs
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
#/path/to/run-weekly
run-parts /path/to/weekly/jobs
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
#/path/to/run-monthly
run-parts /path/to/monthly/jobs
Run Code Online (Sandbox Code Playgroud)
每个脚本还必须设置执行权限:
chmod +x /path/to/run-{hourly,daily,weekly,monthly}
Run Code Online (Sandbox Code Playgroud)
第三,将任何所需的作业符号链接到相应的作业目录。例如,
chmod +x /path/to/job
ln -s /path/to/job /path/to/daily/jobs/
Run Code Online (Sandbox Code Playgroud)
或者,可以定义每个计划脚本来在每个项目的公共目录中搜索作业。假设每个项目都位于/path/to/projects并且每个项目都有后代jobs/{hourly,daily,weekly,monthly},那么/path/to/run-hourly可以定义为:
#!/bin/bash
#/path/to/run-hourly
JOBS=$(find /path/to/projects -type f -path '*/jobs/hourly/*')
while read -r JOB; do
"$JOB"
done <<< "$JOBS"
Run Code Online (Sandbox Code Playgroud)