在我的项目中存储crontab文件

在我的项目中存储crontab文件,cron,Cron,目前,我正在通过键入crontab-e编辑生产服务器的cron。 我想将crontab定义存储在我的项目中,并让我的系统从那里加载它们 有什么方法可以设置现有crontab服务器以指向这样一个include 包括其他crontab/path/to/my/project/project.crontab 我的系统是CentOS 5.4版(最终版) 我不知道是否可以在基本crontab文件中包含其他文件,但也许您可以命令crontab重新加载/更改其内容 比如说,cron每隔5分钟执行一次bash脚本

目前,我正在通过键入
crontab-e
编辑生产服务器的cron。 我想将crontab定义存储在我的项目中,并让我的系统从那里加载它们

有什么方法可以设置现有crontab服务器以指向这样一个include

包括其他crontab/path/to/my/project/project.crontab

我的系统是CentOS 5.4版(最终版)


我不知道是否可以在基本crontab文件中包含其他文件,但也许您可以命令crontab重新加载/更改其内容


比如说,cron每隔5分钟执行一次bash脚本,该脚本读取“project.crontab”并将其附加到crontab文件中。

最简单的方法是将crontab条目放入
/etc/cron.d/
下的文件中。查看一些现有的文件以了解语法。您可以手动(或通过rpm等安装程序)将文件复制到安装目录中的文件,也可以使用指向安装目录中文件的符号链接。

要以可移植方式执行此操作(即不使用
/etc/cron.d
),假设您的部署脚本必须与第三方crontab条目共存,并且前提是您的部署脚本可以在目标节点上执行命令,而不仅仅是上载文件:

test-f project.crontab&&{crontab-u user-l|awk'/^开始项目部分/{hide=1;next}/^结束项目部分/{hide=0;next}!hide{print}echo'#开始项目部分; cat project.crontab;echo'#结束项目部分}}crontab-u用户

上面验证了特定于项目的crontab部分是否存在,从给定用户的crontab中筛选它(如果它已经存在,则不执行其他操作),追加项目部分,然后重新加载批次


crontab-u user-
将所有特定于项目的crontab条目添加到
user
的crontab文件中。

不是可移植的方式。请注意,在更新配置后,您仍然必须通知
crond
,通常不能只更新
crond
后面的文件。您可能需要这样的东西:更新我的cron然后
crontab-l|awk'{去掉旧的小节并替换为新的}crontab
只需使用/etc/cron.d/就更容易了,然后您不必担心通知cron文件已更改。在Solaris上,您不需要。。。(即不可携带):)这是个好主意。最优雅的解决方案应该是拜伦·惠特洛克(Byron Whitlock)的方案,但如果这些方案都不起作用,那么这是一个很棒的备用方案。它允许我将cron规范存储在我想要的项目中。事实上,它不是每隔5分钟更新一次cron,而是作为我的部署脚本的一部分来更新cron。是的,这也会起作用。实际上,这取决于“project.crontab”何时更改以及何时重新加载。如果只有在重建/部署项目时才会更改,那么最好立即更新crontab。请参阅下面的内容,了解如何做到这一点,而不必每隔5分钟在腹股沟踢一次
crond
(假设部署脚本可以在目标节点上发出命令,而不仅仅是上载文件)