包括文件到crontab配置?


8

我试图将特定于项目的crontab配置放入代码存储库中,以使其易于在部署时更新所有后端上的cron作业。

是否可以将文件包含到crontab配置中?就像是

* * * * * execsomething /blablabla/blah/
* * * * * onemore /blablabla
@include '/home/user/project/crontab.conf'

Answers:


8

根据您的cron守护程序和发行版,/ etc中应该有几个目录,您可以在其中放置包含cron作业的文件。

放置在以下目录中的脚本(非cron格式的作业)将以指定的间隔执行。请注意,频率是可以保证的,但可能无法保证确切的时间。对于大多数用户,这些目录就足够了:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

放置在以下目录中的cron格式的作业(如上述示例)将由cron在指定的时间执行。请注意,除了常规条目之外,还需要在命令之前指定作业的用户。对于软件包和软件分发,此方法是分发cronjobs的最佳方法:

/etc/cron.d

cron.d格式化命令的示例:

1 1 * * * root echo "serverfault is awesome" > /dev/null

用户名可以是变量吗?我有一堆需要以同一用户身份运行的命令,但在不同环境中可能是不同用户。我可以做类似$ USER = joeblow 1 1 * * * $ USER echo“ serverfault is awesome”> / dev / null
Jay K

取决于cron守护程序。cronie不允许使用环境变量。
博斯科

4

据我所知 那/etc/cron.d是为了什么。

正如Boscoe指出的那样,这里还有/etc/cron.{hourly,daily,weekly,monthly}目录,但是其中的作业只能以root用户身份运行(除非您明确地使用它/bin/su来更改EUID)。作业中/etc/cron.d有一个额外的字段,用于指定运行它们的用户,而您的问题包含/home/user路径的方式使我认为您希望这些作业能够以任意用户身份运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.