我想要一组每小时,每天,每周的文件,如在/ etc /但为我运行的每个应用程序。
我最好喜欢cron来看看
/srv/www/*/current/config/cron 。
所以我可以添加一个新的Rails应用到/ srv / www,并让cron在下一次运行时select新的作业。
这是一厢情愿吗?
你想拥有相当于cron.hourly,cron.daily,cron.weekly和cron.monthly目录与脚本在他们的每个rails应用程序? 如果是这样,build立约翰说,如果你要添加以下到您的/ etc / crontab,你会得到所需的结果:
01 * * * * root在我的/srv/www/*/current/config/cron.hourly; 执行部分“$ i”> / dev / null 2>&1; DONE 02 4 * * * root为我在/srv/www/*/current/config/cron.daily; 执行部分“$ i”> / dev / null 2>&1; DONE 22 4 * * 0 root for i在/srv/www/*/current/config/cron.weekly; 执行部分“$ i”> / dev / null 2>&1; DONE 42 4 1 * * root为我在/srv/www/*/current/config/cron.monthly; 执行部分“$ i”> / dev / null 2>&1; DONE
然后,每个应用程序就可以指定它需要的cron.X目录的子集,并用相关的脚本填充它。
但是,如果您想为每个应用程序的每个频率select一个可选脚本,那么您希望执行的操作更类似于:
01 * * * * root在我的/srv/www/*/current/config/cron.hourly; 做[-x“$ i”] &&“$ i”; DONE 02 4 * * * root为我在/srv/www/*/current/config/cron.daily; 做[-x“$ i”] &&“$ i”; DONE 22 4 * * 0 root for i在/srv/www/*/current/config/cron.weekly; 做[-x“$ i”] &&“$ i”; DONE 42 4 1 * * root为我在/srv/www/*/current/config/cron.monthly; 做[-x“$ i”] &&“$ i”; DONE
同样,这只会对指定它们的应用程序运行。
其中一个你在找什么?
有cron每小时,每天执行一个帮助程序,并有这个程序确定是否有工作要做
一个典型的crontab将具有诸如
# run-parts 01 * * * * root run-parts /etc/cron.hourly > /dev/null 2>&1 02 4 * * * root run-parts /etc/cron.daily > /dev/null 2>&1 22 4 * * 0 root run-parts /etc/cron.weekly > /dev/null 2>&1 42 4 1 * * root run-parts /etc/cron.monthly > /dev/null 2>&1
我不是专家,但看不到任何理由,您不能以相同的方式添加其他目录。 如果你希望它更自动化,你可以定期运行一个脚本来查找从你select的根目录开始的cron。*目录,并以编程方式将这些path添加到/ etc / crontab中,如果它们不存在的话。
首先,像这样创build一个Bash脚本:
#!/bin/bash for web_job in /srv/www/*/current/config/cron/*; do [ -x $web_job ] && $web_job || : ; done
将其保存为/srv/www/run_web_jobs.sh。 然后,将其添加为cron作业。 例如,为了每天运行(必须是root):
$ ln -s /etc/cron.daily/ /srv/www/run_web_jobs.sh
或者,将其添加到用户的crontab。
$ crontab -e