每包Cronjobs

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用户.

use*_*450 1

依赖性最少的方法是简单地利用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)