如何委派一个crontab中使用另一个文件作为一个crontab? 又名crontab的在SVN / CVS?

也许那里有另一种解决方案于此。 我建立了一个Web应用程序需要5-10 crons,以保持它的维护和不同的时间间隔。 我要检查,在crontab到版本控制,因此,它可以很容易地部署到其他服务器。

我希望能够把一行在/ etc / crontab文件,将告诉它寻找到/myapp/app.crontab文件,将在该文件中的crontab项的所有行...即:

0 1 * * * root /bin/sh /do/something.sh

为什么不签入/ etc / crontab中? 由于部署从服务器到服务器时,有些服务器可能在他们的crontab不同的条目,我不希望打扰。

有任何想法吗? 什么是别人做的,用于存储一串crontab项的转CTRL​​?
谢谢。

--------------解决方案-------------

把你的crontab文件中/etc/cron.d/ - 无论是作为一个签出的文件或者一个符号链接,签出的文件。

我们采取了非常不同的方法来对我工作的项目这个问题。

我们有一个Perl脚本调用crontab.pl所有服务器在他们的crontab调用。 这样做可以意味着在crontab从来没有改变对后续的应用程序部署和crontab.pl脚本可以快乐地生活在源头控制与应用程序的源文件的其余部分。

我们可以指定不同的时间间隔来此脚本的命令行参数。 在crontab是这样的:

*/5 * * * * /usr/local/apache/crontab.pl 5 > /var/log/crontab.log 2>&1 # 5 minute interval
1 * * * * /usr/local/apache/crontab.pl 60 > /var/log/crontab.log 2>&1 # 1 hour interval
1 1 * * * /usr/local/apache/crontab.pl 3600 > /var/log/crontab.log 2>&1 # 1 day interval

然后,它是读取在该命令行时间间隔和运行所需的给定间隔的任务只是一个问题。

只需添加一个(或很少)项至crontab中,并让该条目调用其他修订控制脚本:

0 * * * * /path/to/app/hourly.sh 0 0 * * * /path/to/app/daily.sh 0 1 * * 5 /path/to/app/weekly.sh

hourly.sh然后将调用需要做的一切时,daily.sh会调用一个需要每天做,等一切

我已经找到了一个单一的应用程序,这是最好不要有作业管理大量的cron作业时松在crontab都挂,因为它鼓励你在它们之间忽略依赖关系,即运行14分结束一个任务小时依赖于运行在12分结束的时刻接替任务,但每隔一段时间该任务需要2.1分钟来完成,而其他脚本失败,给你一个Heisenbug。

另一种方法是写自己的守护进程来管理这些任务。

我这样做的方法是放在源代码控制我的crontab文件,然后在我的部署脚本,我更换了什么正在部署的crontab文件。

你可以做到这一点是这样的:

crontab filename

或者为特定用户(必须拥有超级用户访问此):

crontab -u my_web_user filename

其中一个重要的提醒与此的是,它假定只有一个每用户的crontab项,将其保存在SCM中。 如果其他人编辑在服务器上的crontab,这些修改将在下一次部署会丢失。 所以,要意识到这一点。

分类:庆典 时间:2015-03-14 人气:2
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.303 (s). 10 q(s)